簡體   English   中英

MySQL Regexp無法正常工作

[英]MySQL Regexp won't work

我有以下查詢:

SELECT  `admin_users`.* 
FROM `admin_users` 
WHERE (avatar REGEXP 'avatars/Name-[0-9]+.jpg+')  
ORDER BY `admin_users`.`avatar` 
DESC LIMIT 1

如果我有類似的東西也可以:

  • avatars/Name-5.jpg
  • avatars/Name-6.jpg

但是,如果有avatars/Name-15.jpg ,例如,它不會在查詢中返回。

換句話說,它僅適用於1位數,而不適用於更多位數。 我該如何解決?

比較字符串( avatar是什么)時,“化身/名稱-1 ...”位於“化身/名稱-5 ...”之前,僅是因為字符串 “ 1”位於“ 5”之前。

用一個嵌入式數字對它們進行排序是不現實的。 這會做您想要的,但是很神秘:

ORDER BY 0 + MID(avatar, 14)

解釋

  1. MID將以“ avatars / Name-15.jpg”的第14個字符開頭,並提取“ 15.jpg”。
  2. 0+將采用該字符串,將其轉換為數字並提供數字 15。(當字符串變成數字時,只要看起來像數字,就會采用第一個字符。因此, 0+'abc'將傳遞0 ,因為abc開頭沒有看起來像數字的東西。)

如果在所有情況下左側部分都不都是14個字符,則該技巧將失敗。 而且它可能變得如此復雜以至於在SQL中“不可能”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM