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

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

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

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

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Q&A

解決済

3回答

3318閲覧

SQL、正規表現で、1文字目が先頭かカンマ、最後が文末かカンマをどのように書けばよいか

kiyuasw

総合スコア6

SQL

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

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

0グッド

0クリップ

投稿2020/03/04 13:52

前提・実現したいこと

MySQLで、カンマ区切りの文字列に対し、配列の文字が含まれているかを正規表現でSELECTしたいです。

発生している問題・エラーメッセージ

columnに存在するカンマ区切りの文字列の最初と最後にはカンマが存在しないため、
配列の文字1つに対し、3つの正規表現を書いているため、長くなってしまう。

該当のソースコード

column「文字A,他B,他C」
column「他D,文字A,他E」
column「他F,他B,文字A」

SQL

1SELECT * from table where table.column REGEXP "^文字A,|,文字A,|,文字A$|^他B,|,他B,|,他B$"";

試したこと

[^,]文字A[,$] や [^,]他B[$,] などは当然だめでした。

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

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

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

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

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

Orlofsky

2020/03/04 14:06

正規表現も含めて、同じSQLでもデータベースやそのバージョンによって方言が大きいですから、どのデータベースを使うのかを質問のタグで示したり、バージョンも明記した方が適切なコメントが付き易いです。
kiyuasw

2020/03/04 14:35

ご指摘ありがとうございます。 mysql:5.7.22 となります。
Orlofsky

2020/03/04 21:50

[MySQL]タグを追加してください。
guest

回答3

0

参考情報

  • ブラウザから手軽にチェックできる正規表現テストツールまとめ

https://nelog.jp/regular-expression-online-tools

  • 正規表現をテスト・可視化できるサイト

https://qiita.com/kazuki43zoo/items/c47036af579e9e667702

こういったツールを使って、学習したり、動作確認をすると良いです。

投稿2020/03/05 14:18

編集2020/03/05 14:32
katoy

総合スコア22328

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

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

0

ベストアンサー

テストしてませんが、こんな感じで。

SQL

1SELECT * from table where table.column REGEXP "(^|,)(文字A|他B)(,|$)";

[^,]は、「,以外の任意の1文字」
[$,]は、「$という文字、または、,という文字」

投稿2020/03/04 14:39

otn

総合スコア86307

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

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

kiyuasw

2020/03/04 23:40

ありがとうございます。テストしましたら期待通りに動作いたしました。
guest

0

回答じゃないです。

正規化したいね。

投稿2020/03/05 14:35

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問