读书人

SqlServer 查询遇到特殊字符 #039;?#039;无法

发布时间: 2012-02-25 10:01:47 作者: rapoo

SqlServer 查询遇到特殊字符 '?',无法查询到记录
查询语句如下 where ID = '2?**'
只要条件字符中包含? 字符,就查询不到结果。

[解决办法]
try

SQL code
where ID = N'2?**'
[解决办法]
where id = N'2?**'
[解决办法]
9楼的测试根本就不对。

首先,?这个字符,不被中文字符集所支持, 所以在中文操作系统上安装的sqlserver如果用默认排序规则chinese_rpc...,且用text,char,varchar之类数据类型,那么写入?这个字符时,写入就是乱码。

9楼自己可以试一下,
SELECT * FROM TBTEST WHERE CHARINDEX('?',ID)>0
是不是跟你上面那句查到的结果一样?


楼主要想查到正确的结果, 做法无非两种:

1,存储数据时,不考滤排序规则,但用unicode方式编码,即字段用nvarchar,nchar,ntext之类,赋值时加N前辍,比如:
SQL code
CREATE TABLE TBTEST(ID NVARCHAR(10))INSERT TBTEST VALUES(N'AFD2?**')INSERT TBTEST VALUES(N'2FD?**')INSERT TBTEST VALUES(N'FDRE2?**')INSERT TBTEST VALUES(N'2?FD**')INSERT TBTEST VALUES(N'2?**FD')INSERT TBTEST VALUES(N'2?*FD*')INSERT TBTEST VALUES(N'24546564**')SELECT * FROM TBTEST WHERE CHARINDEX(N'?',ID)>0/*AFD2?**2FD?**FDRE2?**2?FD**2?**FD2?*FD**/DROP TABLE TBTEST 

读书人网 >SQL Server

热点推荐