我正在尝试使用PATINDEX函数,如下所示:
select PATINDEX('%[A-Z].%', 'he.llo MA. asd ' collate Cyrillic_General_CS_AS)
我预计它会返回9,但它会返回2。有人能告诉我怎么了吗?我还尝试在第一个参数中提供collate,并使用Latin1_General_CS_AS而不是Cyrilic,结果相同。
尝试强制进行二进制比较,以便逐点进行。
这个家伙链接有助于解决你的问题。链接
我复制了你得到的2,用COLLATE Latin1_General_BIN,它返回了预期的9。
SELECT PATINDEX('%[A-Z].%', 'he.llo MA. asd ' COLLATE Latin1_General_BIN )
以下是我基于这个SO线程的古怪解决方法(以防Matt Akers的回答对你没有帮助):
select PATINDEX('%[ABCDEFGHIJKLMNOPQRSTUVWXYZ].%', 'he.llo MA. asd ' collate Latin1_General_CS_AS)