sql – 如果列数据以numeric开头,则类似操作在nvarchar列过滤器
我在SQL Server表中有nvarchar(50)列,数据如下:
123abc 234abc 456abc 我的查询: select * from table where col like '%abc' 预期结果:应返回所有行 如果列是varchar则工作正常但如果类型为nvarchar则不返回任何行. 有任何想法吗? 解决方法您可能在数据末尾有空格.看看这个例子.Declare @Temp Table(col nvarchar(50)) Insert Into @Temp(col) Values(N'123abc') Insert Into @Temp(col) Values(N'456abc ') Select * From @Temp Where Col Like '%abc' 当您运行上面的代码时,您将只获得123行,因为456行在其末尾有一个空格. 运行下面显示的代码时,您将获得所需的数据. Declare @Temp Table(col nvarchar(50)) Insert Into @Temp(col) Values(N'123abc') Insert Into @Temp(col) Values(N'456abc ') Select * From @Temp Where rtrim(Col) Like '%abc' 根据有关LIKE在线书籍(强调我的)的文件: 使用LIKE进行模式匹配 LIKE支持ASCII模式匹配和Unicode模式匹配.当所有参数(match_expression,pattern和escape_character,如果存在)是ASCII字符数据类型时,将执行ASCII模式匹配.如果任何一个参数都是Unicode数据类型,则所有参数都将转换为Unicode并执行Unicode模式匹配.在LIKE中使用Unicode数据(nchar或nvarchar数据类型)时,尾随空白很重要;但是,对于非Unicode数据,尾随空白并不重要. Unicode LIKE与ISO标准兼容. ASCII LIKE与早期版本的SQL Server兼容. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |