SQL Server 2000 中不区分大小写的 REPLACE()
我有一个包含“Blah-OVER”、“Blah-OveR”等字符串的字段,并且希望选择不带“over”的字符串。这只捕获第一种情况(可以这么说),而不捕获其他情况:
SELECT field as "before", REPLACE(field, 'OVER', '') as "after"
我如何让他们都说“Blah-”(保留剩下的情况)而不尝试用另一个嵌套 REPLACE 函数覆盖每个情况组合?
I have a field that contains strings such as 'Blah-OVER', 'Blah-OveR', etc. and want to select them without the 'over's. This only catches the first case (so to speak) and not the others:
SELECT field as "before", REPLACE(field, 'OVER', '') as "after"
How do I just get them all to say 'Blah-' (preserving the case of what's left) without attempting to cover every case combination with another nested REPLACE function?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用不区分大小写的排序规则:
请参阅 COLLATE 以获取排序规则名称列表,以便您选择适合您的数据的一项。
更新
好的,所以我错过了您的实际请求(更改输入的大小写,而不是查找不区分大小写的)。正确的解决方案是......不更改输入,而是对数据使用适当的排序规则。如果数据必须以特定格式显示,请使用客户端中的显示选项,例如。 CSS
text-transform:uppercase
,不在服务器 SELECT 中。没有任何内置 SQL 函数可以就地执行此转换,但构建 使用 的 CLR 函数正则表达式。 (在 SQL 2005 上,而不是在 SQL 2000 上……哦,我需要更多咖啡)。
Use a case insensitive collation:
See COLLATE for list of collation names so you choose the one appropiate for your data.
Update
Ok, so I missed your actual request (change case of input, not find case-insensitive). The proper solution is... not to change the input but use an adequate collation for your data. If the data must be displayed in a specific format, use display options in the client, eg. CSS
text-transform:uppercase
, not in the server SELECT.There isn't any built-in SQL function to do this transformation in-place, but is trivial to build a CLR function that uses RegEx. (On SQL 2005, not on SQL 2000... doh, I need more coffe).
我不熟悉 SQL Server,但也许它允许您使用正则表达式。这些通常提供不区分大小写的模式(通过 i 标志设置)。
否则你可以在替换调用之前大写,例如
I'm not familiar with SQL Server, but maybe it allows you to make use of regular expressions. These usually offer a case-insensitive mode (set via the i-flag).
Otherwise you could uppercase before the replace call, e.g.