0

我的数据集中有名称字段。使用 Oracle PL SQL,如何搜索包含敬语的记录?

我有一个要在单独的表中搜索的敬语列表。任何帮助将非常感激。

谢谢。

4

2 回答 2

1

我会使用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')
                                                                         ^^^^^
于 2013-06-12T17:23:26.353 回答
0
SELECT names.lastName
FROM names
INNER JOIN honorophics ON names.lastName LIKE honorophics.listOfHonorophics + '%'

这将连接 2 个表,生成行,其中 lastName 包含表中带有荣誉的模式

于 2013-06-12T17:16:02.557 回答