SELECT ....什么东西等于汉字

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??,并且我在窗口应用程序上显示中文字符没有问题.

?? 是汉字.

Ode*_*ded 9

这不是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数据.