
いつもお世話になります。
SQL文で質問があります(環境はPHP+SQLiteです)。
keywordというカラムがあって、そこにはキーワードとして使う文字列が入っています。
(データベースを検索するときに使うタグを集めたようなものです)
例えば、
"本 料理 ブック cooking book"
という感じです。
UPDATEで、このカラムに別のキーワードを追加したい場合、どのようなSQL文にすれば良いのでしょうか?
追加するキーワードは既存のキーワードと重複しないように追加したいです。
例えば、すでに"本 料理 ブック cooking book"というレコードがあるので、UPDATEで「レシピ」を追加したら"本 料理 ブック cooking book レシピ"となるように、「本」を追加する場合はすでに「本」という文字列があるので既存のままで変更なしにしたいです。
そもそもこのようなことはSQL文でできるのでしょうか?
できないとしたら一旦SELECTでkeywordのレコードを取得してPHPで改変したものをUPDATEで上書きするしかないでしょうか?
どうぞよろしくお願い致します。
No.1ベストアンサー
- 回答日時:
SQLite環境ないため無試験ですが。
構文は参考URLを参照
かんたんに書いておくと
update テーブル名 set 更新列名 = 更新内容 [where条件];
ですよ
set 更新列名 = 更新内容は
は
set keyword = keyword || 'あああ'
と書ける。等式ではなく代入なのでA=A+1と同じ
でも追加したいキーワードが "本" のとき
keywordが '本社 料理' だったり '貸本 ブック cooking book'だったら
"本" を追加するんですよね?
なのでキーワードを区切る半角スペースを含め判断が必要。
where条件で like検索してNotで否定。つまり含まれないなら更新対象。
Keywordには先頭に、追加文字列は前後に半角スペース補ってから判断。
update テーブル名
set keyword = keyword || ' ' || 追加キーワード
where (' ' || keyword || ' ') not like (' ' || 追加キーワード || ' ')
;
かな
参考URL:http://rktsqlite.sourceforge.jp/sqlite/manip.htm …
お礼が遅れてすみません。
教えてくださってどうもありがとうございます。
ちょっとうまく行っていないのでもう少しチャレンジしてみようと思います。
No.2
- 回答日時:
#1です。
ごめんなさい。where条件で部分一致がなりたたない。
update テーブル名
set keyword = keyword || ' ' || 追加キーワード
where (' ' || keyword || ' ') not like ('% ' || 追加キーワード || ' %')
;
です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL UPDATE my_items SET item_name '赤い,甘い,ケーキ' WHERE id 1 2023/01/03 09:52
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Access(アクセス) Access VBAで条件を追加する(書き込む)場所 2 2022/03/23 12:05
- MySQL SQLでカラムを追加し、条件に合致した場合にフラグ(レコード)を付与する方法 2 2022/05/18 23:54
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
このQ&Aを見た人はこんなQ&Aも見ています
-
文字列を追加してUPDATEしたい
MySQL
-
sqlで文字列を最後に追加したい
SQL Server
-
UPDATE文
SQL Server
-
-
4
update文で改行を入れる
Oracle
-
5
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
6
アクセスで追加した項目に全て同じ値を一発で入れたい
Access(アクセス)
-
7
SQL の Update文(?) と substring について
Access(アクセス)
-
8
importについて
Oracle
-
9
SQLPLUSで結果を画面に表示しない
Oracle
-
10
【SQL】他テーブルに含まれる値に合致する行を抽出
その他(データベース)
-
11
「マスタ」と「テーブル」の違いとはなんでしょうか?
Oracle
-
12
ODBCの接続に失敗しました(3146)について
その他(Microsoft Office)
-
13
Oracleでの文字列連結サイズの上限
Oracle
-
14
データの先頭文字の置換
Oracle
-
15
ORA-00959: 表領域'****'は存在しません
Oracle
-
16
select insertで複数テーブルから値を取得したい
Oracle
-
17
Chr(13)とChr(10)の違いは?
PowerPoint(パワーポイント)
-
18
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
19
Oracleで上書きImportはできますか?
その他(データベース)
-
20
Oracle 8i コンマ(,)を含むデータをinsertしたい
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
HTMLソースの検索について
-
UPDATEで既存のレコードに文字...
-
sqlite select 表示されない
-
SQL*LOADER実行時のロードデー...
-
hp z200 sffというパソコンな...
-
Excelでしりとりを作る方法
-
エクセルで去年のデータを今年...
-
Java環境で使用するAccessデー...
-
SQL Server2008のクエリの書式...
-
DBをまたいで更新
-
SQLローダーについて
-
'modify' 付近に不適切な構文が...
-
フラグをたてるってどういうこ...
-
【Access】SQL文教えてください!
-
SQL文はなぜ「作成」ではなく「...
-
C#にVBにあるビジュアル データ...
-
ExcelVBAで複数のコマンドボタ...
-
【ExcelVBA】範囲選択の方法に...
-
たぷる・・・初学者 Python 4
-
自己結合による新しいカラムの作成
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UPDATEで既存のレコードに文字...
-
SQL*LOADER実行時のロードデー...
-
OracleのLONG型への insert に...
-
【DB2】VARCHAR拡張時のデータ...
-
カラム名を変更するには
-
【SQL】同値のレコードがある場...
-
Access VBA フィールドの追加と...
-
sqlite select 表示されない
-
【SQL】他テーブルに含まれる値...
-
フラグをたてるってどういうこ...
-
SELECT INTOで一度に複数の変数...
-
sqlに記述できない文字
-
truncate tableを使って複数の...
-
PostgreSQLのtimestamp型で時間...
-
エラーを起こす方法
-
既存データをINSERT文にして出...
-
オラクルのUPDATEで複数テーブル
-
SQLで、Join句で結合したテ...
-
timestampのデータはどのように...
-
selectの単純繰り返し
おすすめ情報