MySQL 不包含名為 PATINDEX 的函數,PATINDEX 是 SQL Server 中的一個函數
在 MySQL 中,可以使用 LOCATE()
或者 POSITION()
函數來達到類似的目的。這兩個函數都用于在一個字符串中查找子字符串的位置。
語法:
LOCATE(substr, str)
POSITION(substr IN str)
其中,substr
是要在 str
中查找的子字符串,str
是要搜索的主字符串。
示例:
SELECT LOCATE('text', 'This is a text string.'); -- 返回 11
SELECT POSITION('text' IN 'This is a text string.'); -- 返回 11
這兩個函數在處理大小寫時有所不同。LOCATE()
默認是大小寫敏感的,而 POSITION()
則是大小寫不敏感的。如果需要進行大小寫不敏感的搜索,可以將輸入字符串轉換為統一的大小寫形式(如全部轉換為小寫或大寫)。
例如:
SELECT LOCATE(LOWER('Text'), LOWER('This is a Text string.')); -- 返回 11
SELECT POSITION(LOWER('Text') IN LOWER('This is a Text string.')); -- 返回 11
請注意,返回的位置索引是從 1 開始的,而不是從 0 開始。如果子字符串沒有在主字符串中找到,LOCATE()
和 POSITION()
函數將返回 0。