正規表現でSQLのすべての数字のファイル名を非検索し、列の値で結果を置き換えます

エイドリアン:

それが可能だ場合、私は知らないが、私は、MySQLデータベースに方法を探しています:

  • アイテムを検索model = 'YES-OK'し、imageこのために、私は正規表現があることが分かった:ファイル名は(行番号5の例では)すべての数値ではありません\/my\/dir-ectory\/\b.*[a-zA-Z]+.*\b.jpg動作するはずです。

ここでは、画像の説明を入力します。

  • 一致している行:カンマなしSKUで画像のファイル名を置き換えます。

例データベース入力:

+----+--------+--------+-----------------------------+
| id |  sku   | model  |            image            |
+----+--------+--------+-----------------------------+
|  1 | 123,45 | YES-OK | /my/dir-ectory/abc4.jpg     |
|  2 | 123,46 | YES-OK | /my/dir-ectory/4abc.jpg     |
|  3 | 123,47 | YES-OK | /my/dir-ectory/abcd.jpg     |
|  4 | 123,48 | YES-OK | /my/dir-ectory/3a-baaac.jpg |
|  5 | 123,49 | YES-OK | /my/dir-ectory/12349.jpg    |
+----+--------+--------+-----------------------------+

出力例:

+----+--------+--------+-----------------------------+
| id |  sku   | model  |            image            |
+----+--------+--------+-----------------------------+
|  1 | 123,45 | YES-OK | /my/dir-ectory/12345.jpg    |
|  2 | 123,46 | YES-OK | /my/dir-ectory/12346.jpg    |
|  3 | 123,47 | YES-OK | /my/dir-ectory/12347.jpg    |
|  4 | 123,48 | YES-OK | /my/dir-ectory/12348.jpg    |
|  5 | 123,49 | YES-OK | /my/dir-ectory/12349.jpg    |
+----+--------+--------+-----------------------------+

これは純粋なSQLで可能ですか?

ゴードン・リノフ:

あなたのイメージのパスと仮定すると、すべての行に同じ形式になっています。

select id, sku, model,
       concat(substring_index(image, '/', 3), '/', replace(sku, ',', ''), '.jpg')
from t
where model = 'YES-OK';

そして、あなたは数字のために発見した正規表現を追加することができます。私は従って、それは少し難しい見つけます。

あなたは簡単に同じロジックを組み込むことができupdate、あなたがしたい場合update

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=402502&siteId=1