在有数字有汉字的字段中含有查询不正确的问题
有字段内容类似如下
1调整:0.001.003.012->0.001.003.015 3110512310008->3120512310008 [总部客服-荆福武->总部客服- 陶静]
2调整:0.001.003.012->0.001.003.015 3110512310008->3120512310008 档案类型: [原] 小档案 [现] 大档案
用如下结果正确SELECT *
FROM dbo.ModInfo
WHERE (CHARINDEX('3150603', ModFields) > 0)
而将查询内容换成汉字则无正确结果
SELECT *
FROM dbo.ModInfo
WHERE (CHARINDEX('档案类型', ModFields) > 0)
同时如用like也是同样不能正确执行
请教应如何才能让查询含有'档案类型'的结果正确
[解决办法]
前面加个N试试
SELECT *
FROM dbo.ModInfo
WHERE (CHARINDEX(N'档案类型', ModFields) > 0)
[解决办法]
楼主数据库是什么版本?
我在MSSQL2008R2,测试代码如下:
create table t1
(
col varchar(2000)
)
insert into t1
select '1调整:0.001.003.012->0.001.003.015 3110512310008->3120512310008 [总部客服-荆福武->总部客服- 陶静]' union all
select '2调整:0.001.003.012->0.001.003.015 3110512310008->3120512310008 档案类型: [原] 小档案 [现] 大档案'
select * from t1 where CHARINDEX('档案类型', col) > 0
--------------------------------
col
2调整:0.001.003.012->0.001.003.015 3110512310008->3120512310008 档案类型: [原] 小档案 [现] 大档案
[解决办法]
create table #t1( col varchar(max))insert into #t1select '1调整:0.001.003.012->0.001.003.015 3110512310008->3120512310008 [总部客服-荆福武->总部客服- 陶静]' union allselect '2调整:0.001.003.012->0.001.003.015 3110512310008->3120512310008 档案类型: [原] 小档案 [现] 大档案'select * from #t1 where charindex('档案类型',col)>0select * from #t1 where charindex(N'档案类型',col)>0结果:col-------------------------------------------------2调整:0.001.003.012->0.001.003.015 3110512310008->3120512310008 档案类型: [原] 小档案 [现] 大档案(1 行受影响)