Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL获取特定字符之前的所有字符_Mysql_Character - Fatal编程技术网

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

MySQL获取特定字符之前的所有字符,mysql,character,Mysql,Character,我有一个表,其中提取了一些值,一列值可以包含“value1 | value2 | value3”,但我只想获取|-“value1”前面的字符 这是我试过的,但没用。。我做错了什么? 谢谢 $sql=“从$tablename中选择*LEFT('Like',查找('|','Like')-1) 其中Parent='0'并按ORDERASC键入类似'top'的顺序 我想将其用于所有值,而不仅仅是一个字段。您需要以下语句来获取[ColName]的该部分: LEFT([ColName],INSTR([Col

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

这是我试过的,但没用。。我做错了什么? 谢谢

$sql=“从$tablename中选择*LEFT('Like',查找('|','Like')-1) 其中
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)
...

谢谢,更喜欢子字符串索引解决方案