【发布时间】:2020-05-09 07:06:06
【问题描述】:
我正在努力使用下面的查询来提取数据。
该列中的所有字符串值都会出现此问题。即使我从该表中复制 SSMS 中的实际值并将其粘贴到 select 语句 (where string = 'MyStringVlaue') 中。 LTRIM/RTRIM 函数也没有帮助。
一些信息:
数据库表源列数据类型为VARCHAR(500)。
我的数据库兼容级别是 130。使用 SSMS 2016。 我的数据库排序规则是 SQL_Latin1_General_CP1_CI_AS 我的字符串列排序规则是 SQL_Latin1_General_CP1_CI_AS
但是,当查询从有问题的源表复制到其他表中的相同字符串值时,它不会产生任何问题。
有问题的表是使用 SQL Server 导入向导从向导识别为 2007-2010 类型的 Excel 文件导入的。
drop table #T
select 'MyStringVlaue' as String into #t
select * from #t where String ='MyStringVlaue' -- this does not return anything when executed on the Real table!
select * from #t
--例子
select ASCII('MEDICAL SERVICES DISTRICT') -- output is 65
--附言
我通过运行select * into from originalSourceTable 创建了有问题的表的副本
还是有同样的问题。
【问题讨论】:
-
所以给我们一个实际字符串不起作用的例子。并给我们列的排序规则。并在字符串中的每个字符上使用ASCII 函数来查看它们是否是funny 的。
-
嗨@DaleK,我刚刚用请求的信息更新了问题。
-
ASCII 一次只能处理一个字符,所以很痛苦,但是你必须对每个字符进行子串化(目前你只能得到第一个字符的结果)。那就是说你的字符串看起来很正常。
-
您没有在字符串末尾存储 CR 和/或 LF 字符,是吗?这不会复制和粘贴,因此可能会导致您看到的内容。
标签: sql-server string replace unicode sqldatatypes