MySQL在特定字符之前获取所有字符

时间:2013-06-30 22:29:51

标签: mysql character

我有一个表格,我提取了一些值,一列值可以包含“value1 | value2 | value3”,但我只想获取前面的字符。 - “value1”。

这是我尝试过的,但它不起作用..我做错了什么? 谢谢!

  

$ sql =“SELECT * LEFT('Like',LOCATE('|','Like') - 1)FROM $ tablename   WHERE Parent ='0'并输入LIKE'top'ORDER BY Order ASC“;

我想将此用于所有值,而不仅仅是一个字段..

2 个答案:

答案 0 :(得分: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的创建脚本。

答案 1 :(得分:5)

两件事:(1)您的*与您尝试使用LEFT的表达式之间没有逗号,(2)您放置like在引号中,因此函数处理常量值like而不是名为like的列。尝试将like放入反引号中。

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

您也可以使用MySQL SUBSTRING_INDEX功能:

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