我的数据集中有名称字段。使用 Oracle PL SQL,如何搜索包含敬语的记录?
我有一个要在单独的表中搜索的敬语列表。任何帮助将非常感激。
谢谢。
我会使用REGEXP_LIKE
并针对敬语表进行交叉连接。
此查询将列出所有具有敬语以及敬语的名称。如果一个名字有多个敬语,它将在每场比赛中列出:
SELECT
myTable.Name,
honorifics.Title
FROM myTable
CROSS JOIN honorifics
WHERE REGEXP_LIKE(myTable.Name, ''(\W|^)' || honorifics.Title || '(\W|$)')
正则表达式检查尊称是否在字符串的开头或前面有一个“非单词”字符,以及它是否在字符串的末尾或后面是一个非单词字符。
请注意,此搜索区分大小写。要使其不区分大小写,请将第三个参数添加'i'
到REGEXP_LIKE
:
WHERE REGEXP_LIKE(myTable.Name, ''(\W|^)' || honorifics.Title || '(\W|$)', 'i')
^^^^^
SELECT names.lastName
FROM names
INNER JOIN honorophics ON names.lastName LIKE honorophics.listOfHonorophics + '%'
这将连接 2 个表,生成行,其中 lastName 包含表中带有荣誉的模式