Kam*_*012 3 c# sql sql-server unicode
在C#窗口应用程序中,当我这样做时
select * from myTable where category = '??'
Run Code Online (Sandbox Code Playgroud)
要么
select * from myTable where category = 'baby??'
Run Code Online (Sandbox Code Playgroud)
结果不返回任何行.
但
select * from myTable where category = 'baby'
Run Code Online (Sandbox Code Playgroud)
此结果返回一些行.谁能告诉我为什么好吗?
注意:在myTable中,某些类别的列具有一些带??或的值baby??,并且我在窗口应用程序上显示中文字符没有问题.
?? 是汉字.
这不是C#问题,而是SQL问题.
确保传入的SQL字符串在SQL中通过前缀N(SQL Server,MySQL)解释为Unicode字符串:
select * from myTable where category = N'??'
Run Code Online (Sandbox Code Playgroud)
请参阅MSDN上的常量(Transact-SQL).
Unicode字符串
Unicode字符串的格式类似于字符串,但前面有一个N标识符(N代表SQL-92标准中的国家语言).N前缀必须为大写.例如,'Michél'是字符常量,而N'Michél'是Unicode常量.Unicode常量被解释为Unicode数据,并且不使用代码页进行评估.Unicode常量确实有排序规则.此归类主要控制比较和区分大小写.除非使用COLLATE子句指定排序规则,否则为Unicode常量分配当前数据库的默认排序规则.对于字符数据,每个字符使用2个字节而不是每个字符1个字节来存储Unicode数据.
| 归档时间: |
|
| 查看次数: |
2439 次 |
| 最近记录: |