POSITION 是一个字符串处理函数,它处理所有数据类型(BIT、BLOB 和 CHARACTER),并返回一个字符串在另一个字符串中的位置。
POSITION 返回一个整数,表明一个字符串(SearchExpression)在另一个个字符串(SourceExpression)中的位置。即源字符串中开始匹配另一个字符串的第一个字符的位置。
如果存在 FROM 子句,它将给出搜索字符串中开始搜索的位置。如果缺少 FROM 子句,则从头开始搜索源字符串。
如果存在 REPEAT 子句,它将给出重复的次数,返回位置是源字符串中第 N 个出现的搜索字符串。如果重复次数是负数,则从尾部开始搜索源字符串。
如果缺少 REPEAT 子句,假设重复次数是 +1;即返回从头开始搜索出现的第一个位置。如果搜索字符串的长度为零,则结果为 1。
如果找不到搜索字符串,则结果为零:如果存在 FROM 子句,则上述语句仅适用于源字符串中被搜索的部分;如果存在 REPEAT 子句,则仅当字符串出现次数不足时,上述语句才适用。
只要有一个参数是 NULL,结果便为 NULL。
搜索字符串和源字符串可以是 CHARACTER、BLOB 或 BIT 数据类型,但它们必须属于同一种类型。
POSITION('Village' IN 'Hursley Village'); returns 9 POSITION('Town' IN 'Hursley Village'); returns 0 POSITION ('B' IN 'ABCABCABCABCABC'); -> returns 2 POSITION ('D' IN 'ABCABCABCABCABC'); -> returns 0 POSITION ('A' IN 'ABCABCABCABCABC' FROM 4); -> returns 4 POSITION ('C' IN 'ABCABCABCABCABC' FROM 2); -> returns 3 POSITION ('B' IN 'ABCABCABCABCABC' REPEAT 2); -> returns 5 POSITION ('C' IN 'ABCABCABCABCABC' REPEAT 4); -> returns 12 POSITION ('A' IN 'ABCABCABCABCABC' FROM 4 REPEAT 2); -> returns 7 POSITION ('AB' IN 'ABCABCABCABCABC' FROM 2 REPEAT 3); -> returns 10 POSITION ('A' IN 'ABCABCABCABCABC' REPEAT -2); -> returns 10 POSITION ('BC' IN 'ABCABCABCABCABC' FROM 2 REPEAT -3); -> returns 5