1

我正在尝试像这样使用PATINDEX函数:

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

我预计它会返回 9,但它会返回 2。有人能告诉我有什么问题吗?我还尝试在第一个参数中提供 collat​​e 并使用 Latin1_General_CS_AS 而不是 Cyrrilic - 结果相同。

4

2 回答 2

1

尝试强制进行 BINARY 比较,以便一点一点地进行。

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

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

SELECT PATINDEX('%[A-Z].%', 'he.llo MA. asd ' COLLATE Latin1_General_BIN )
于 2014-04-15T16:21:35.377 回答
1

这是我基于此 SO 线程的怪异解决方法(以防 Matt Akers 回答对您没有帮助):

select PATINDEX('%[ABCDEFGHIJKLMNOPQRSTUVWXYZ].%', 'he.llo MA. asd ' collate Latin1_General_CS_AS)
于 2014-04-15T16:36:18.203 回答