0

言語側でもmysqlでも、正規表現にあまり慣れていません。

クエリを書くのを手伝ってもらえますか?

私はDBテーブルを持っています。1つの列には、株式番号、名前、価格の3種類のデータがあります。気になるのは在庫数です。この DB デザインは私が作成したものではないので、ご容赦ください。

データの形式は次のとおりです。

[#3346] - $3,500.00, some name

このテーブルから、指定された Stock Number に一致するレコードを取得する必要があります3346

SELECT * FROM table_name WHERE col_name REGEXP ?

どうすればこれを行うことができますか?

4

1 に答える 1

2

あなたが欲しい:

WHERE col_name REGEXP '^\\[#3346\\]'

部分的にそれを取る:

  • ^文字列の開始を示します
  • \[はリテラル[文字です(ただし、文字列内では、\それ自体が別の文字と一緒にエスケープする必要があります\
  • #3346リテラル文字列です#3346
  • \]はリテラル]文字です(ただし、文字列内では、\それ自体が別の文字と一緒にエスケープする必要があります\

したがって、上記の式は、リテラルで始まる任意の文字列と一致します[#3346]たまたま、この目的のために、単純なパターンマッチでうまくいくので、正規表現を使用する必要さえありません。

WHERE col_name LIKE '[#3346]%'

ただし、データベースを作成しなかった場合でも、 3つの列に分割してデータ構造を正規化col_nameすることを強くお勧めします。

于 2012-05-18T10:55:18.887 に答える