Kev*_*Kev 6 sql-server sql-server-2000
我有一个字段,其中包含'Blah-OVER','Blah-OveR'等字符串,并希望在没有'over'的情况下选择它们.这只能抓住第一种情况(可以这么说)而不是其他情况:
SELECT field as "before", REPLACE(field, 'OVER', '') as "after"
Run Code Online (Sandbox Code Playgroud)
我怎么只是让他们所有人都说"Blah-"(保留剩下的情况)而不试图用另一个嵌套的REPLACE函数覆盖每个案例组合?
Rem*_*anu 10
使用不区分大小写的排序规则:
SELECT field as "before", REPLACE(field COLLATE SQL_Latin1_General_Cp1_CI_AI
, 'OVER', '') as "after"
Run Code Online (Sandbox Code Playgroud)
有关归类名称列表,请参阅COLLATE,以便为数据选择合适的归类名称.
更新
好的,所以我错过了你的实际请求(改变了输入的情况,没有找到不区分大小写的).正确的解决方案是...不要更改输入,但要为数据使用足够的排序规则.如果数据必须以特定格式显示,请使用客户端中的显示选项,例如.CSS text-transform:uppercase,不在服务器SELECT中.
没有任何内置的SQL函数可以就地进行这种转换,但是构建使用RegEx的CLR函数是微不足道的.(在SQL 2005上,而不是SQL 2000 ... doh,我需要更多的咖啡).