1

streetaddressという名前の列があります。

<Street Number> <Street Name>

例えば:

15 rue Gontier-Patin
4968 Hillcrest Circle

純粋にSQLで行の先頭から数字を削除するにはどうすればよいですか?

4

4 に答える 4

7

このようなものはどうですか-数字で始まる文字列の最初のスペースまでのすべてを削除します

UPDATE mytable 
SET addresscol=SUBSTRING(addresscol, LOCATE(' ', addresscol)+1)
WHERE addresscol REGEXP '^[0-9]';
于 2010-01-13T12:00:28.263 に答える
3

これは上記の@PaulDixonに基づいていますが、並べ替えなどのデータを更新せずに結果を返すためのものです。

SELECT IF(address REGEXP '^[0-9]', SUBSTRING(address, LOCATE(' ', address)+1), address) AS addrSort FROM table;
于 2012-10-16T20:06:43.380 に答える
0

これは、各エントリの番地が家番号とスペース( "")で区切られていることに基づいて機能するはずです。

UPDATE table
SET streetaddress = MID(streetaddress, LOCATE(' ', streetaddress) + 1);

私はこれをテストしました、そしてそれはうまく働きます。

更新前に家番号を新しい列に抽出する場合は、次を使用することもできます。

UPDATE table
SET housenumber = MID(streetaddress, 1, LOCATE(' ', streetaddress) - 1);
于 2010-01-13T12:15:16.470 に答える
0

MySQLには正規表現置換関数がないため、列の値によって異なります。文字列が常に数字で始まり、次にスペースで始まる場合は、Paul Dixonが投稿したSQlクエリを使用してそれを行うことができます(doh、彼は私よりも速かった:D)。

それを解決するために正規表現が必要な場合は、データベース外のアプリケーションコードでそれを行う必要があります。

于 2010-01-13T12:02:13.370 に答える