0

数字や私書箱を無視して、住所文字列の最初の 4 文字を選択したいと考えています。

たとえば、「顧客」テーブルにデータベース列「住所」があります。

51 church st 

クエリでは、数字を無視して「chur」のみが必要です。任意の数にすることができます。数には興味がありません。また、これを1つのレコードだけにしたくありません。これをすべてのレコードで実行したいので、たとえば、次のレコードがあります。

51 church st
6178 fookeral ave
597537 state ct

私の1つのクエリでは、結果を次のようにしたい

Chur
Fook
Stat

1回のクエリでこれを取得するにはどうすればよいですか?

4

2 に答える 2

1

代わりに、PATINDEXCHARINDEXを使用して、範囲内の任意の文字に一致させることができます。a-z

SELECT SUBSTRING(address, PATINDEX('%[a-z]%', address), 4) AS FirstFour
FROM customers

のようなアドレスがある場合、これは正しい結果をもたらします51 32 church st。つまり、数字の後にスペースが続き、別の数字が続きます。

このソリューションでは、Microsoft SQL Server を使用することを前提としています。

編集:Oracleのソリューションを追加しました(11g R2でテスト済み)。

Oracle では、次のように正規表現とREGEXP_SUBSTR関数を使用できます。

SELECT
  REGEXP_SUBSTR("Address",'[[:alpha:]]{4}') "FourChars",
  INITCAP(REGEXP_SUBSTR("Address",'[[:alpha:]]{4}')) "FourCharsInitCap"
FROM customers

これは以下を返します:

FOURCHARS   FOURCHARSINITCAP
chur        Chur
fook        Fook
stat        Stat
于 2013-11-14T06:12:17.510 に答える