0

データベーステーブルに1つの列名phone_numberがあります。現在、テーブルに格納されている数値は、例+91-852-9689568のような形式です。フォーマットしたいのですが数字だけが必要です。MySqlでそれを行うにはどうすればよいですか?REGEXPのような関数を使って試しましたが、関数が存在しないなどのエラーが表示されます。複数のREPLACEを使用したくありません。

4

4 に答える 4

0

オプションの 1 つは、 を使用することmySql substringです。(形式が変わらない限り)

SELECT concat(SUBSTRING(pNo,2,2), SUBSTRING(pNo,5,3), SUBSTRING(pNo,9,7)); 
于 2012-12-26T11:24:31.813 に答える
0

以下を試して、コメントしてください。

Select dbo.Regex('\d+',pNo);

Select dbo.Regex('[0-9]+',pNo);

RUBLARを参照。

したがって、MYSQL は Oracle とは異なりますUSer defined Function to get numbers。これでうまくいくかもしれません。

于 2012-12-26T11:36:58.233 に答える
0

プロジェクションのみを使用してフォーマットする場合はSELECT、を使用します。replace を 2 回使用するだけで問題ありません。

SELECT REPLACE(REPLACE(columnNAme, '-', ''), '+', '') 
FROM   tableName

それ以外の場合、値を永続的に更新する場合は、UPDATE を使用します

UPDATE tableName
SET    columnName = REPLACE(REPLACE(columnNAme, '-', ''), '+', '')
于 2012-12-26T11:34:37.227 に答える
0

MySQL には、パターン マッチングと置換のための組み込み関数がありません。

文字列全体をアプリケーションにフェッチしてから、より柔軟な文字列操作関数を使用することをお勧めします。たとえば、PHP の preg_replace() です。

于 2012-12-26T11:34:44.497 に答える