2013-06-30 28 views
7

我有一個表格,我提取一些值,一列值可以包含「value1 | value2 | value3」,但我只想獲取字符前的| - 「value1」。MySQL獲取特定字符前的所有字符

這是我試過的,但它不工作..我做錯了什麼? 謝謝!

$ SQL =「SELECT * LEFT( '喜歡',找到( '|', '象') - 1)$表名 WHERE Parent = '0' 和類型LIKE '頂' ORDER BY Order ASC「;

我想用這個所有值,而不只是一個領域..

回答

10

你需要下面的語句來獲得的[COLNAME]該部分:如果你想

LEFT([ColName],INSTR([ColName],"|")-1) 

選擇多列到同一記錄集列中,您可以將所有內容與以下內容結合:

SELECT LEFT(ColName,INSTR(ColName,"|")-1) AS FirstValue From $TableName; 
UNION ALL 
SELECT LEFT(ColName2,INSTR(ColName2,"|")-1) AS FirstValue From $TableName; 

如果您想要要在多列上使用此腳本,請編寫sql的創建腳本。

5

兩件事情:(1)你沒有你*而你試圖用LEFT和(2)你把引號like做表情,所以功能上的工作之間的逗號常數值like而不是名爲like的列。嘗試將like置於反引號中。

SELECT *, LEFT(`Like`, LOCATE('|', `Like`)-1) 
... 

您也可以使用此MySQL的SUBSTRING_INDEX功能:

SELECT *, SUBSTRING_INDEX(`Like`, '|', 1) 
... 
+0

謝謝,像SUBSTRING_INDEX解決方案更多 – zhihong

0

我認爲有一個簡單的方法:

strSplit(ColName,'|',1) 

,對嗎?

相關問題