SQL Server 2000中不区分大小写的REPLACE()

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函数可以就地进行这种转换,但是构建使用RegExCLR函数是微不足道的.(在SQL 2005上,而不是SQL 2000 ... doh,我需要更多的咖啡).