1. ホーム
  2. mysql

[解決済み] MySQLフィールドの先頭と末尾のホワイトスペースを削除するには?

2022-04-30 09:32:46

質問

2つのフィールド(国名とISOコード)を持つテーブルがあります。

Table1

   field1 - e.g. 'Afghanistan' (without quotes)
   field2 - e.g. 'AF'(without quotes)

一部の行で、2番目のフィールドの最初と最後に空白があり、クエリーに影響を及ぼしています。

Table1

   field1 - e.g. 'Afghanistan' (without quotes) 
   field2 - e.g. ' AF' (without quotes but with that space in front)

テーブルを調べて、field2 のホワイトスペースを見つけ、置き換える方法は(SQL で)ありますか?

どのように解決するのですか?

あなたが探しているのは トリム .

UPDATE FOO set FIELD2 = TRIM(FIELD2);


TRIMは複数の種類の空白をサポートすることができますが、一度に1つだけで、デフォルトでスペースを使用することを述べておく価値があるように思えます。しかし TRIM s.

 TRIM(BOTH ' ' FROM TRIM(BOTH '\n' FROM column))

を本当に取り除きたいのであれば すべて を使うと、一回の呼び出しで空白を消すことができます。 REGEXP_REPLACE とともに [[:space:]] という表記があります。以下はその例である。

SELECT 
    -- using concat to show that the whitespace is actually removed.
    CONCAT(
         '+', 
         REGEXP_REPLACE(
             '    ha ppy    ', 
             -- This regexp matches 1 or more spaces at the beginning with ^[[:space:]]+
             -- And 1 or more spaces at the end with [[:space:]]+$
             -- By grouping them with `()` and splitting them with the `|`
             -- we match all of the expected values.
             '(^[[:space:]]+|[[:space:]]+$)', 

             -- Replace the above with nothing
             ''
         ), 
         '+') 
    as my_example;
-- outputs +ha ppy+