2010-05-17 48 views
0

我想排序從mysql數據庫中取出的一列,並將其存儲在數組中。提取後,我正在做下面的步驟。字符串字符從取出的數據庫數據交換後對mysql數組值進行排序

  1. DB以行格式提取字段數組。 - > Field1,Field2,Field3,Field4,Field5
  2. 從該字段數組中取出一列數據[Field3],交換字符串關鍵字。 例如。
    AB013, DB131, RS001
    應該變成:
    013AB, 131DB, 001RS

現在我想排序上述新的字符串格式值 喜歡 - > 001RS,013AB,131DB

它不是那樣的,固定的編號爲交換串。要再次拆分和連接字符串,有一個動態值,它允許獲取數據字符串將該字符串從給定字符位置拆分,然後用新名稱重新排序。

回答

0

你爲什麼不讓DB做的工作(在您的例子中,固定位置數據):

select Field1 
    , Field2 
    , concat( substr(Field3,3,3) 
       ,substr(Field3,1,2) 
      ) as SwapedField3 
    , Field4 
    , Field5 
from Table 
order by SwapedField3 

然而,這並沒有採取「動態值」爲拆分頭寸計入...

  • 該值來自哪裏?
  • 它可以以某種方式從數據中推導出來嗎?
+0

在我的情況下,有很多字符串格式的唯一代碼,需要在列表模式下交換和重新排序。 #現在這裏獨特的代碼和線代碼來自數據庫,線代碼是分割字符串和獨特代碼的連續字符串的參考。 #分割字符串字符。沒有。值也來自數據庫並存儲在線路代碼參考中。 – 2010-05-18 12:16:36

+0

@Shail Patel:但是如果使用length()函數,但是不能使用'行代碼'參數化「subste()」函數嗎?類似 'substr(Field3,LineCode,length(Field3) - LineCode)' – lexu 2010-05-19 16:06:24

0
select * from (
    select 
    Field1, 
    Field2, 
    CASE Field3 
     WHEN 'AB013' THEN '013AB' 
     WHEN 'DB131' THEN '131DB' 
     WHEN 'RS001' THEN '001RS' 
    END CASE AS NewField3, 
    Field4, 
    Field5 
    from Table1 
) 
order by NewField3 
相關問題