データ セットに名前フィールドがあります。Oracle PL SQL を使用して、敬称を含むレコードを検索するにはどうすればよいですか?
別の表で検索したい敬称のリストがあります。どんな助けでも本当に感謝しています。
ありがとう。
REGEXP_LIKE
敬称テーブルに対してクロス結合を使用して実行します。
このクエリは、敬称と敬称を持つすべての名前を一覧表示します。名前に複数の敬称がある場合は、一致ごとにリストされます。
SELECT
myTable.Name,
honorifics.Title
FROM myTable
CROSS JOIN honorifics
WHERE REGEXP_LIKE(myTable.Name, ''(\W|^)' || honorifics.Title || '(\W|$)')
正規表現は、敬称が文字列の先頭にあるか、「単語以外の」文字が前にあるかどうか、および文字列の最後にあるか、単語以外の文字が後にあるかどうかを確認します。
この検索では大文字と小文字が区別されることに注意してください。大文字と小文字を区別しないようにするには、 に の 3 番目の引数を追加し'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 にはテーブルからの敬称を含むパターンが含まれています。