使用instr函数取值时,1总是被出现在其他id中比如17531会取到1,应该如何优化
时间: 2024-03-16 13:42:11 浏览: 45
VB函数大全_基本函数大全[定义].pdf
如果你使用`INSTR`函数的第三个参数为1,则该函数将返回字符串中第一个匹配项的位置。如果你要匹配的字符串中可能包含数字1,则可能会发生上述情况。为了避免这种情况,可以将`INSTR`函数的第三个参数设置为2,如下所示:
```
INSTR(string, substring, 2)
```
这将从字符串中的第2个位置开始搜索子字符串,并返回第一个匹配项的位置。
如果你只希望匹配以逗号分隔的整数列表中的某个整数,可以使用`REGEXP_INSTR`函数,该函数支持正则表达式。例如,要匹配整数列表中的整数17531,可以使用以下正则表达式:
```
(^|,)17531(,|$)
```
其中,(^|,)表示开头或逗号,(,|$)表示逗号或结尾。以下是一个示例查询:
```
SELECT *
FROM table
WHERE REGEXP_INSTR(',' || id_list || ',', '(^|,)17531(,|$)') > 0;
```
该查询将返回所有包含整数17531的行。
阅读全文