"Doe、John"の形式の名前のテーブルがあり、 "Doe、J"に解析する必要があります。私はすでに姓を抽出するためにクエリーを作成しましたが、カンマと最初のイニシャルを含むように変更する方法がわかりません。"姓、FI"の形式を解析する名前Oracle
SUBSTR(Table.Name,1,INSTR(Table.Name,',',1,1))
"Doe、John"の形式の名前のテーブルがあり、 "Doe、J"に解析する必要があります。私はすでに姓を抽出するためにクエリーを作成しましたが、カンマと最初のイニシャルを含むように変更する方法がわかりません。"姓、FI"の形式を解析する名前Oracle
SUBSTR(Table.Name,1,INSTR(Table.Name,',',1,1))
NVL
、SUBSTR
とINSTR
の組み合わせを使用してください。
SELECT NVL(SUBSTR("namefield", 0, INSTR("namefield", ',')+2), "namefield") AS Name
FROM yourtable
入力
Doe, John
Smith, Mark
出力
NAME
Doe, J
Smith, M
何これについて -
SELECT SUBSTR(Table.Name,1,INSTR(Table.Name,',',1)+2)
限り、一つだけのスペースがあなたの例のデータごとに列にありますようREGEXP_REPLACEバージョン、:
select regexp_replace('Doe, John', '(.* .).*', '\1')
\ 1は、文字列のすべてである括弧内の文字列の一致する部分を指し、残りの部分を無視して、最後のスペースとその後ろの文字までを含む。
識別子の前後に二重引用符を使用する必要はありません。大文字と小文字を区別するため、誤った大文字小文字を使用すると問題が発生する可能性があります。 – MT0
@ MT0フィールド名は実際には 'namefield'という名前ではありません。名前が変わっても名前は変わりませんが、ロジックは同じですが、二重引用符は使用できません:) – Matt
@Matt That works! NVL()は必要ですか? –