8

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

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

$sql = "SELECT * LEFT('Like', LOCATE('|', 'Like')-1) FROM $tablename WHERE Parent= '0' AND Type LIKE 'top' ORDER BY OrderASC";

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

4

2 回答 2

13

您需要以下语句来获取 [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 的创建脚本。

于 2013-06-30T22:32:52.143 回答
6

*两件事:(1)您和您尝试使用的表达式之间没有逗号,LEFT以及(2)您like在引号中,因此这些函数正在使用常量值like而不是您的列名为like. 尝试like输入反引号。

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

您还可以SUBSTRING_INDEX为此使用 MySQL 函数:

SELECT *, SUBSTRING_INDEX(`Like`, '|', 1)
...
于 2013-06-30T22:33:36.073 回答