当前位置:  开发笔记 > 数据库 > 正文

区分字符数据库字段中的"AB"和"Ab"

如何解决《区分字符数据库字段中的"AB"和"Ab"》经验,为你挑选了1个好方法。

具体来说,是Sql Server 2005/T-Sql.我有一个字段,主要是一系列的两个字符,并且它们都应该是大写的,但是有一些遗留数据早于当前的DB/System,我需要弄清楚哪些记录违反了上层套管契约.

我认为这会奏效:

select * from tbl where ascii(field1) <> ascii(upper(field1))

事实上它给了我一些记录.它们已被纠正,现在该查询不返回任何数据.但是我有人告诉我数据库中仍然存在混合的案例数据,我刚刚找到一个例子:'FS'和'Fs'都报告了相同的ascii值.

为什么这种方法存在缺陷?有什么更好的方法来解决这个问题,或者我如何才能使这种方法正常工作?



1> kristof..:

如果所有日期都应该是大写的,只需做一个更新

update tbl
set field1 = upper(field1)

但要回答您的原始问题,此查询应该为您提供您期望的结果:

select * from tbl
where field1 COLLATE Latin1_General_CS_AS <> upper(field1)

编辑:刚刚注意到使用COLLATE的建议也是由Ian发布的

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有