如何在 SQL Server 中查找全部大写的值?
如何找到全部大写的列值?就像 LastName = 'SMITH'
而不是 'Smith'
这是我正在尝试的...
SELECT *
FROM MyTable
WHERE FirstName = UPPER(FirstName)
How can I find column values that are in all caps? Like LastName = 'SMITH'
instead of 'Smith'
Here is what I was trying...
SELECT *
FROM MyTable
WHERE FirstName = UPPER(FirstName)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(11)
您可以强制区分大小写的排序规则;
You can force case sensitive collation;
尝试
此排序规则允许区分大小写的比较。
如果要更改数据库的排序规则,以便不需要在查询中指定区分大小写的排序规则,则需要执行以下操作(来自 MSDN):
1) 确保您拥有重新创建用户数据库及其中所有对象所需的所有信息或脚本。
2) 使用 bcp 实用程序等工具导出所有数据。
3) 删除所有用户数据库。
4) 重建 master 数据库,并在安装命令的 SQLCOLLATION 属性中指定新的排序规则。例如:
5) 创建所有数据库及其中的所有对象。
6) 导入所有数据。
Try
This collation allows case sensitive comparisons.
If you want to change the collation of your database so you don't need to specifiy a case-sensitive collation in your queries you need to do the following (from MSDN):
1) Make sure you have all the information or scripts needed to re-create your user databases and all the objects in them.
2) Export all your data using a tool such as the bcp Utility.
3) Drop all the user databases.
4) Rebuild the master database specifying the new collation in the SQLCOLLATION property of the setup command. For example:
5) Create all the databases and all the objects in them.
6) Import all your data.
您需要使用区分大小写的服务器排序规则,如下所示:
You need to use a server collation which is case sensitive like so:
默认情况下,SQL 比较不区分大小写。
Be default, SQL comparisons are case-insensitive.
尝试
Try
您可以尝试使用它作为您的 where 子句吗?
Could you try using this as your where clause?
看看这里
看来你有几个选项
将字符串转换为 VARBINARY(length)
使用 COLLATE 指定区分大小写的排序规则
计算要比较的字符串的 BINARY_CHECKSUM()
更改表列的 COLLATION 属性
使用计算列(VARBINARY 隐式计算)
Have a look here
Seems you have a few options
cast the string to VARBINARY(length)
use COLLATE to specify a case-sensitive collation
calculate the BINARY_CHECKSUM() of the strings to compare
change the table column’s COLLATION property
use computed columns (implicit calculation of VARBINARY)
试试这个
Try This
您可以在 Case 中找到很好的示例敏感搜索:在 SQL Server 上获取小写或大写字符串
You can find good example in Case Sensitive Search: Fetching lowercase or uppercase string on SQL Server
我为此创建了一个简单的
UDF
:然后您可以轻松地在
WHERE
子句中的任何列上使用它。使用OP示例:
I created a simple
UDF
for that:Then you can easily use it on any column in the
WHERE
clause.To use the OP example:
回答这个问题的简单方法是使用排序规则。让我尝试解释一下:
在上面的查询中,我使用了 collate,并且没有使用任何内置的 sql 函数,如“UPPER”。原因是因为使用内置函数有其自身的影响。
请找到链接以更好地理解:
Upper 和 Collate 的性能影响
Simple way to answer this question is to use collation. Let me try to explain:
In the above query I have used collate and didn’t use any in built sql functions like ‘UPPER’. Reason because using inbuilt functions has it’s own impact.
Please find the link to understand better:
performance impact of upper and collate