3

以下のようなクエリがあります。

SELECT 
  myWord, 
  LEAST (
    if (Locate('0',myWord) >0,Locate('0',myWord),999),
    if (Locate('1',myWord) >0,Locate('1',myWord),999),
    if (Locate('2',myWord) >0,Locate('2',myWord),999),
    if (Locate('3',myWord) >0,Locate('3',myWord),999),
    if (Locate('4',myWord) >0,Locate('4',myWord),999),
    if (Locate('5',myWord) >0,Locate('5',myWord),999),
    if (Locate('6',myWord) >0,Locate('6',myWord),999),
    if (Locate('7',myWord) >0,Locate('7',myWord),999),
    if (Locate('8',myWord) >0,Locate('8',myWord),999),
    if (Locate('9',myWord) >0,Locate('9',myWord),999)
  ) as myPos
FROM myTable;

このクエリを使用して、文字列の最初の整数の位置を見つけています。

私の質問は

regex以下に示すように、どのように私が持っているそれらの10行を削除することができますか。

    if (Locate('0',myWord) >0,Locate('0',myWord),999),
    if (Locate('1',myWord) >0,Locate('1',myWord),999),
    if (Locate('2',myWord) >0,Locate('2',myWord),999),
    if (Locate('3',myWord) >0,Locate('3',myWord),999),
    if (Locate('4',myWord) >0,Locate('4',myWord),999),
    if (Locate('5',myWord) >0,Locate('5',myWord),999),
    if (Locate('6',myWord) >0,Locate('6',myWord),999),
    if (Locate('7',myWord) >0,Locate('7',myWord),999),
    if (Locate('8',myWord) >0,Locate('8',myWord),999),
    if (Locate('9',myWord) >0,Locate('9',myWord),999)

これを行う方法はありますか?

デモ

4

2 に答える 2

1

MySQLを見てください: REGEX を使用して文字列を抽出し (REGEX を選択)Google の "mysql regex locate" の最初の結果を取得します。mysql の正規表現でそれを行うことはできないようです。あなたのソリューションは、すでにそれを行うための良い方法です。

于 2012-06-22T12:20:05.090 に答える
0

このユーザー定義関数を参照してください。

REGEXP_INSTR?そこから数字の位置を見つけるために使用できます。(ただし、テストは行っていません。)

于 2012-06-22T13:37:01.330 に答える