我有一个表格,我提取了一些值,一列值可以包含“value1 | value2 | value3”,但我只想获取前面的字符。 - “value1”。
这是我尝试过的,但它不起作用..我做错了什么? 谢谢!
$ sql =“SELECT * LEFT('Like',LOCATE('|','Like') - 1)FROM $ tablename WHERE
Parent
='0'并输入LIKE'top'ORDER BYOrder
ASC“;
我想将此用于所有值,而不仅仅是一个字段..
答案 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)
...