You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle中如何精准匹配列中指定字符串并返回整行

精准匹配分号分隔列中的单个值

你当前的LIKE (%963%)查询会命中所有包含"963"子串的行(比如值为963963963的行也会被返回),要精准匹配列中存在**单独的"963"**这个值的行,可以根据你使用的数据库选择以下方案:

MySQL/MariaDB

方法1:替换分隔符后用FIND_IN_SET

FIND_IN_SET默认支持逗号分隔的列表,先把分号替换成逗号再匹配:

SELECT * FROM table 
WHERE FIND_IN_SET('963', REPLACE(column, ';', ',')) > 0;

方法2:正则表达式匹配

直接用正则匹配"963"被分号包裹或处于首尾的情况:

SELECT * FROM table 
WHERE column REGEXP '(^|;)963(;|$)';

SQL Server

方法1:拆分字符串后匹配

用STRING_SPLIT拆分列值,再匹配目标值:

SELECT DISTINCT t.* FROM table t
CROSS APPLY STRING_SPLIT(t.column, ';') s
WHERE s.value = '963';

方法2:多条件LIKE匹配

覆盖值等于"963"、开头是"963;"、中间包含";963;"、结尾是";963"这四种情况:

SELECT * FROM table 
WHERE column = '963' 
   OR column LIKE '963;%' 
   OR column LIKE '%;963;%' 
   OR column LIKE '%;963';

PostgreSQL

用STRING_TO_ARRAY把列值转成数组,再用ANY判断目标值是否存在:

SELECT * FROM table 
WHERE '963' = ANY(STRING_TO_ARRAY(column, ';'));

内容的提问来源于stack exchange,提问作者Kank Moiz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 08:15:31