Transact-SQL整理不起作用

时间:2014-04-15 15:51:56

标签: sql-server tsql collate patindex

我尝试使用PATINDEX这样的功能:

select PATINDEX('%[A-Z].%', 'he.llo MA. asd ' collate Cyrillic_General_CS_AS)

我希望它返回9但它返回2。 有人可以告诉我什么是错的吗?我也尝试在第一个参数中提供collat​​e并使用Latin1_General_CS_AS而不是Cyrrilic - 结果相同。

2 个答案:

答案 0 :(得分:1)

尝试强制进行BINARY比较,以便逐渐进行。

这个家伙链接有助于解决您的问题。 LINK

我复制了你得到的2,并且使用COLLATE Latin1_General_BIN它返回了预期的9。

SELECT PATINDEX('%[A-Z].%', 'he.llo MA. asd ' COLLATE Latin1_General_BIN )

答案 1 :(得分:1)

以下是我基于this SO thread的怪异解决方法(如果Matt Akers的回答没有帮助你):

select PATINDEX('%[ABCDEFGHIJKLMNOPQRSTUVWXYZ].%', 'he.llo MA. asd ' collate Latin1_General_CS_AS)