具体来说,Sql Server 2005/T-Sql。我有一个主要是一系列两个字符的字段,它们都应该是大写的,但是有一些旧数据早于当前的数据库/系统,我需要找出哪些记录违反了大写外壳契约。
我认为这会起作用:
select * from tbl where ascii(field1) <> ascii(upper(field1))
事实上,它还给了我一些记录。此后它们已被更正,现在该查询不返回任何数据。但是我有人告诉我数据库中仍然存在混合大小写数据,我刚刚找到了一个示例:“FS”和“Fs”都报告了相同的 ascii 值。
为什么这种方法有缺陷?有什么更好的方法来解决这个问题,或者我怎样才能修复这种方法以使其正常工作?