在MySQL中,CHARINDEX()
函數(shù)用于查找一個(gè)字符串在另一個(gè)字符串中首次出現(xiàn)的位置。如果沒有找到指定的字符串,則返回0。但是,請(qǐng)注意,MySQL中實(shí)際上并沒有 CHARINDEX()
函數(shù)。相反,MySQL使用 LOCATE()
和 INSTR()
函數(shù)來實(shí)現(xiàn)類似的功能。
對(duì)于 LOCATE()
函數(shù),語(yǔ)法如下:
LOCATE(substr, str[, pos])
substr
是要在 str
中查找的子字符串。str
是要在其中進(jìn)行搜索的主字符串。pos
(可選)是從主字符串的哪個(gè)位置開始搜索。默認(rèn)值為1。對(duì)于 INSTR()
函數(shù),語(yǔ)法如下:
INSTR(str, substr[, pos[, occurrence]])
str
是要在其中進(jìn)行搜索的主字符串。substr
是要在 str
中查找的子字符串。pos
(可選)是從主字符串的哪個(gè)位置開始搜索。默認(rèn)值為1。occurrence
(可選)表示要查找子字符串的第幾個(gè)出現(xiàn)。默認(rèn)值為1。當(dāng)使用這些函數(shù)時(shí),如果子字符串未在主字符串中找到,則會(huì)返回0。因此,在使用這些函數(shù)時(shí),可以通過檢查返回值是否為0來處理錯(cuò)誤。例如:
SELECT IF(LOCATE('abc', 'abcdefg') = 0, 'Substring not found', 'Substring found');
或者:
SELECT IF(INSTR('abcdefg', 'abc') = 0, 'Substring not found', 'Substring found');
這兩個(gè)查詢都將返回 “Substring found”,因?yàn)樽幼址?“abc” 確實(shí)存在于主字符串 “abcdefg” 中。如果子字符串不存在于主字符串中,則會(huì)返回 “Substring not found”。