0

mysql dbに対してこのようなSQLクエリを実行するのに問題があります。dbのフィールドAを更新する必要がありますが、多くのデータを含むBフィールドもあります。例:

ASIAN HORSE 70з рус 600A (261x175x220)

また

Бэрен polar 55/59з (555112) 480A (242x175x190) 

70をフェッチしてフィールドAに設定する必要があり、55/59は同じです(ただし、別のレコードの場合)。

しかし、Bフィールドで、最後が単語であるものを検索するにはどうすればよいですかз(すべてのデータが%の前にあるわけではありませんз

宿題のように聞こえるかもしれませんが...でも、終わりのある単語だけを選択する方法がわかりません...

4

2 に答える 2

1

MySQL関数substring_indexを使用して、何かで区切られた文字列の一部を選択できます。たとえば、これはMyColumnから3番目の「単語」を選択します。

select substring_index(substring_index(MyColumn, ' ', 3), ' ', -1) from MyTable

70зの3番目の「単語」ですASIAN HORSE 70з рус 600A (261x175x220)。)

更新「з」で終わる「単語」を探している3番目の単語の代わりに、次を使用できます。

select substring_index(substring_index(MyColumn, 'з', 1), ' ', -1) from MyTable

ただし、これは「з」を区切り文字と見なし、結果から削除します。concatを使用して追加し直すことができます。

select concat(substring_index(substring_index(MyColumn, 'з', 1), ' ', -1), 'з') from MyTable
于 2012-12-07T20:55:59.700 に答える
0

3番目の値が常に特定のフィールドに入るようにフィールドを解析しようとしている場合は、難しい問題があり、おそらくユーザー定義関数を作成する必要があります。

ただし、70зが存在するかどうかを確認して別のフィールドを設定するだけの場合は、次のように機能するはずです。

update t
    set B = '70з'
    where A like '% 70з' or A like '% 70з %' or A like '70з %' or A = '70з'

これは、スペースを使用して単語の境界を定義し、文字列がAの最初、途中、最後、または値全体のいずれにあるかを考慮します。

于 2012-12-07T19:22:50.473 に答える