
下記のデータベースで『nameフィールドに値がセットされているもののみ』、別の文字に置き換えたいと思いますが、例えば『UPDATE `test` SET `name` = "かきくけ";』のような書き方ではnameフィールドのすべてのレコードを更新してしまいます。
その為、上記SQL文のSET以降で『nameフィールドに値がセットされているもののみ』という条件を付加すれば良いと思ったのですが、どのようなSQL文を書けば良いか分からなかった為、アドバイスいただける方がいらっしゃいましたら、ご教示の程よろしくお願いします。
CREATE TABLE IF NOT EXISTS `test` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(64) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;
INSERT INTO `test` (`id`, `name`) VALUES
(1, 'あいうえお'),
(2, ''),
(3, 'さしす'),
(4, ''),
(5, 'ab');
以上、よろしくお願いします。
No.1ベストアンサー
- 回答日時:
UPDATE 表名
SET 列名=更新値[,・・・]
WHERE 検索条件
という基本的な構文です。
>nameフィールドに値がセットされているもののみ
「値がセットされている、セットされていない」とは、具体的に何をもって判断するのでしょうか?
一般的にはNULLでしょうが、提示された定義では「NOT NULL」でNULLにできないようになっています。
「NOT NULL」をやめ、NULLを「値がセットされていない」状態とするなら、
WHERE `name` IS NOT NULL
といった条件指定になります。
「NOT NULL」はそのままで、「長さ0の文字」を値がセットされていないとするなら、
WHERE `name`>''
だとか
WHERE CHAR_LENGTH(`name`)>0
などの条件指定が考えられます。
とここまで書いて、「長さ0の文字」を格納しているのに気付きました。テーブルの各列の役割や値について、説明するようにして欲しいものです。
ご回答ありがとうございます。
ご教示いただいたSQLを試したところ、意図した動作となりました。
【NULL許可で値がセットされていない=NULLの場合】
UPDATE `test`
SET `name` = "かきくけ"
WHERE `name` IS NOT NULL
【NULL不許可で値がセットされていない=長さ0の文字列の場合】
UPDATE `test`
SET `name` = "かきくけ"
WHERE CHAR_LENGTH(`name`)>0
それと、値がセットされていないの定義が漏れており、申し訳ございせんでした。
以後、気をつけたいと思います。
以上、よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- MySQL エラー 1068 (42000): 複数の主キーが定義されていますエラー 2 2022/11/17 04:36
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- MySQL あと、MySQLの文字コードはutf8 気になりますね 1 2022/12/01 07:22
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- MySQL SHOW CREATE TABLE posts;これって何ですか? 3 2022/08/28 22:57
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- PHP php エラー 2 2022/10/23 16:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Update文の書き方について
-
使うべきでない文字。
-
sum()の出力結果順に並び替えを...
-
割合(パーセント)を求めるに...
-
SQL文で右から1文字だけ削除す...
-
複数の表の条件でのDELETE文
-
【MYSQL】asでリネームしてwher...
-
GROUP BYを行った後に結合した...
-
OracleのSQL*PLUSで、デー...
-
Oracleでの文字列連結サイズの上限
-
最新の日付とその金額をクエリ...
-
アクセス クエリ-で空白以外の...
-
SELECTで1件のみ取得するには?
-
SQLの問題です。
-
oracleの分割delete
-
差し込み印刷のレコード数について
-
ACCESSで大量の更新を行うと「...
-
unionでマージした副問合せを結合
-
MERGE文を単体テーブルに対して...
-
実績累計の求め方と意味を教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQL文で右から1文字だけ削除す...
-
使うべきでない文字。
-
sum()の出力結果順に並び替えを...
-
割合(パーセント)を求めるに...
-
【初歩】ラジオボタンをつかっ...
-
MySQLで MAX()とGROUP BYを使う...
-
【MYSQL】asでリネームしてwher...
-
チェックボックスの項目をDBにi...
-
SQLの集計で「全て」の合計も表...
-
カウント結果を1レコードの中...
-
表示幅を短くしたい
-
重複が
-
月別、販売員別の集計がわかり...
-
何にかが違うから エラーなんで...
-
SQLでデータを整形して取得可能...
-
1つのテーブルから複数のテーブ...
-
MySQL のデータからドロップダ...
-
Oracleの監視。
-
抽出時のことで質問です
-
JOINでの結果取得 サブクエリ...
おすすめ情報