杂记

1. NHibernate2.1.2中处理中文字符串常量有问题,由于譬如xxx like '%我是中文哈哈哈%'对于英文排序规则的数据库会没用(众所周知,少了个N在引号之前),NHibernate理应解析成T-SQL的时候加上才对。但不知道是bug还是哪里的配置不对,不论是直接拼HQL(会在解析的时候报错)还是用SetString的方式给参数赋值都不行。暂时没有对策之前,改库吧。参考:http://wenwen.soso.com/z/q138190061.htm

第一种办法:先选中出错的数据库→选中以后右键点击属性会弹出数据库属性 对话框→选中数据库属性对话框中的选项→把选项中的排序规则设置成:Chinese_PRC_90_CI_AS→最后点击确定即可。
(注意:在选择数据库属性的时候必须确保你所修改的数据库未被使用才可以修改否则会失败的)

第二种办法:首先打开你的sql查询分析器(新建查询),然后输入以下代码执行即 可:ALTER DATABASE 数据库名 COLLATE Chinese_PRC_90_CI_AS
例如:
ALTER DATABASE 9NPC COLLATE Chinese_PRC_CI_AI

ALTER DATABASE AutoUpgrade COLLATE Chinese_PRC_CI_AI

解析原因:出现以上情况主要是因为数据库属性的排序规则设置不正确,在Microsoft SQL Server 2005 中,字符串的物理存储由排序规则控制。排序规则指定表示每个字符的位模式以及存储和比较字符所使用的规则。
排序规则名称由两部份构成,前半部份是指本排序规则所支持的字符集。
如:
  Chinese_PRC_90_CI_AS
前半部份:指UNICODE字符集,Chinese_PRC_指针对大陆简体字UNICODE的排序规则。
排序规则的后半部份即后缀 含义:
  _BIN 二进制排序
  _CI(CS) 是否区分大小写,CI不区分,CS区分
  _AI(AS) 是否区分重音,AI不区分,AS区分   
  _KI(KS) 是否区分假名类型&defKI不区分,KS区分 
_WI(WS) 是否区分宽度 WI不区分,WS区分 

区分大小写:如果想让比较将大写字母和小写字母视为不等,请选择该选项。
区分重音:如果想让比较将重音和非重音字母视为不等,请选择该选项。如果选择该选项,比较还将重音不同的字母视为不等。
区分假名:如果想让比较将片假名和平假名日语音节视为不等,请选择该选项。

区分宽度:如果想让比较将半角字符和全角字符视为不等,请选择该选项。

附:相关SQL

--显示所有可选的排序规则 

SELECT   *   

  FROM   ::fn_helpcollations()


--看谁连着导致我不能改...kill之 

exec sp_who


EXEC sp_configure 'allow updates',[0|1]    -- 0不让改,1让改

RECONFIGURE WITH OVERRIDE 

 2. 记录点正则表达式,省得又忘了

[\s\S]匹配所有字符(关键是包括回车,譬如\r\n之流) 

((?!java).)表示不包含java单词的字符串。当然这个例子合法但不合理,更合适的例子是 ((?!java).)* 。又如((?!java)(?!\.net).)*是不含java也不含.net的字符串。

原文地址:https://www.cnblogs.com/damnedmoon/p/1718939.html