質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

2回答

5502閲覧

MySQL カラムで空白だけのものをNULLに変換したい

Reiz

総合スコア29

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2018/06/08 10:16

###やりたいこと
他の文字に空白が混ざったものではなく、空白のみのデータをNULLにしたい

###対象
半角スペース、全角スペースだけのデータ
半角スペースと全角スペースが混合の場合もあります

半角スペースだけの場合は下記の構文で良いらしいのですが全角が混ざったときがわかりません。

UPDATE

1

to_single_byteで一旦全角スペースを半角スペースに変換してからNULLにする方法もあるようですが、
SQLサーバーでは使えないようです。

MySQLのバージョンは5.7.21です。
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

「SQLサーバーでは使えないようです。 」が気になりますが
MySQLでいいんですよね?

  • 元データ

SQL

1create table tbl(id int primary key,val varchar(20) null); 2insert into tbl values 3(1,' '), 4(2,' '), 5(3,'a b'), 6(4,repeat(' ',10)), 7(5,null);
  • 更新

SQL

1update tbl set val=null where val regexp '^[[:space:] ]+$'; 2

投稿2018/06/08 11:12

yambejp

総合スコア114835

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Reiz

2018/06/11 02:23

ご回答ありがとうございます。 SQL文でも正規表現が使えたんですね!勉強になりました!
guest

0

WHEREでREPLACE で全角空白をNULLにしてからTRIMしては?

SQL

1UPDATE テーブル名 SET カラム名 = NULL 2where TRIM(REPLACE(カラム名, ' ', ' ')) IS NULL

FUNCTION REPLACE

投稿2018/06/08 10:23

編集2018/06/08 12:38
Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2018/06/08 10:45

Nullではなくて、半角スペースに変換しないと、1文字でも全角空白があるとNUllになっちゃいますよ。
Orlofsky

2018/06/08 10:52

全角・半角の空白のみのデータをNULLにしたい、って意向かと思いまして。
sazi

2018/06/08 11:48

この条件だと全角空白が1文字でも含まれてたら更新対象になってしまうのではないですか?
Orlofsky

2018/06/08 12:03

REPLACE して TRIMした結果が NULL ではないから問題ありません。
sazi

2018/06/08 12:31

試してみたら、replace()の引数にNullが設定されていると結果は全てNullですね。
Orlofsky

2018/06/08 12:37

そうでしたか。ごめんなさい。回答を修正しておきます。
sazi

2018/06/08 12:44

普段、replaceでNullに置き換えるなんて事しないので、気付きませんでしたが、引数がNUllだと結果はnullを返却するタイプの関数ですね。
Orlofsky

2018/06/08 12:57

わたしも勉強になりました。ありがとうございます。
Reiz

2018/06/11 02:27

説明文に合わせた形でのご回答ありがとうございました。 saziさんも有意義なご指摘ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問