2011-07-20 25 views
0

我有mysql表具有有数据类似Mysql的查找字符串和过滤结果数按数字串

SKL-05 
TIP-01 
TIP-02 L/R 
TIP-12 UV 
TIP-120 L/R 
TIP-121 L/R 
TIP-13 L/R 

我想这个结果像如下

SKL-05 
TIP-01 
TIP-02 L/R 
TIP-12 UV 
TIP-13 L/R 
TIP-120 L/R 
TIP-121 L/R 
排序字段PRODUCT_NAME

在字符串01,02,03等数字意味着 请帮助我们...

在此先感谢!

+0

使用'子()'函数以剥离的第一个字符。 –

+0

'ORDER BY CAST(SUBSTRING_INDEX(SUBSTRING(product_name,5),'',1)AS INT)'可能有效。 –

回答

0

您可以尝试使用MySQL的SUBSTRING()SUBSTRING_INDEX()功能:String functions

尝试:

ORDER BY CAST(SUBSTRING_INDEX(SUBSTRING(product_name,5),' ',1) AS INT) 

ORDER BY CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(product_name,' ',1),'-',-1) AS INT) 
0

有几个选项:

  1. 将代码重新格式化以使它们自然排序,例如。

    TIP-121 L/R  --> TIP-121 L/R 
    TIP-13 L/R  --> TIP-013 L/R 
    
  2. 分割字符串成及其零部件和订单上他们的个人。如果有很多零件,这可能会有点可怕。例如。

    SELECT code 
    FROM table 
    ORDER BY 
        SUBSTR(code, 1, 4), 
        CAST(SUBSTR(code, 5, LOCATE(' ', code)) AS UNSIGNED)