MySQL获取特定字符之前的所有字符
我有一个表,其中提取了一些值,一列值可以包含“value1 | value2 | value3”,但我只想获取|-“value1”前面的字符 这是我试过的,但没用。。我做错了什么? 谢谢 $sql=“从$tablename中选择*LEFT('Like',查找('|','Like')-1) 其中MySQL获取特定字符之前的所有字符,mysql,character,Mysql,Character,我有一个表,其中提取了一些值,一列值可以包含“value1 | value2 | value3”,但我只想获取|-“value1”前面的字符 这是我试过的,但没用。。我做错了什么? 谢谢 $sql=“从$tablename中选择*LEFT('Like',查找('|','Like')-1) 其中Parent='0'并按ORDERASC键入类似'top'的顺序 我想将其用于所有值,而不仅仅是一个字段。您需要以下语句来获取[ColName]的该部分: LEFT([ColName],INSTR([Col
Parent
='0'并按ORDER
ASC键入类似'top'的顺序
我想将其用于所有值,而不仅仅是一个字段。您需要以下语句来获取[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)您的*
和您试图使用的左表达式之间没有逗号;(2)您将like
放在引号中,因此,函数处理的是常量like
,而不是名为like
的列。试着把像
一样放在背景符号中
SELECT *, LEFT(`Like`, LOCATE('|', `Like`)-1)
...
您还可以使用MySQL函数实现以下功能:
SELECT *, SUBSTRING_INDEX(`Like`, '|', 1)
...
谢谢,更喜欢子字符串索引解决方案