streetaddressという名前の列があります。
<Street Number> <Street Name>
例えば:
15 rue Gontier-Patin
4968 Hillcrest Circle
純粋にSQLで行の先頭から数字を削除するにはどうすればよいですか?
streetaddressという名前の列があります。
<Street Number> <Street Name>
例えば:
15 rue Gontier-Patin
4968 Hillcrest Circle
純粋にSQLで行の先頭から数字を削除するにはどうすればよいですか?
このようなものはどうですか-数字で始まる文字列の最初のスペースまでのすべてを削除します
UPDATE mytable
SET addresscol=SUBSTRING(addresscol, LOCATE(' ', addresscol)+1)
WHERE addresscol REGEXP '^[0-9]';
これは上記の@PaulDixonに基づいていますが、並べ替えなどのデータを更新せずに結果を返すためのものです。
SELECT IF(address REGEXP '^[0-9]', SUBSTRING(address, LOCATE(' ', address)+1), address) AS addrSort FROM table;
これは、各エントリの番地が家番号とスペース( "")で区切られていることに基づいて機能するはずです。
UPDATE table
SET streetaddress = MID(streetaddress, LOCATE(' ', streetaddress) + 1);
私はこれをテストしました、そしてそれはうまく働きます。
更新前に家番号を新しい列に抽出する場合は、次を使用することもできます。
UPDATE table
SET housenumber = MID(streetaddress, 1, LOCATE(' ', streetaddress) - 1);
MySQLには正規表現置換関数がないため、列の値によって異なります。文字列が常に数字で始まり、次にスペースで始まる場合は、Paul Dixonが投稿したSQlクエリを使用してそれを行うことができます(doh、彼は私よりも速かった:D)。
それを解決するために正規表現が必要な場合は、データベース外のアプリケーションコードでそれを行う必要があります。