我有一个表格,我在其中提取一些值,一列值可以包含“value1|value2|value3”,但我只想获取 | 之前的字符 - “价值1”。
这是我尝试过的,但它不起作用..我做错了什么?谢谢!
$sql = "SELECT * LEFT('Like', LOCATE('|', 'Like')-1) FROM $tablename WHERE
Parent= '0' AND Type LIKE 'top' ORDER BYOrderASC";
我想将它用于所有值,而不仅仅是一个字段..
您需要以下语句来获取 [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)您和您尝试使用的表达式之间没有逗号,LEFT以及(2)您like在引号中,因此这些函数正在使用常量值like而不是您的列名为like. 尝试like输入反引号。
SELECT *, LEFT(`Like`, LOCATE('|', `Like`)-1)
...
您还可以SUBSTRING_INDEX为此使用 MySQL 函数:
SELECT *, SUBSTRING_INDEX(`Like`, '|', 1)
...