我有一个表,在这里提取一些值,一个列值可以包含“value 1\x/value 2\{e76f}(Value1),但我只想在”x“之前得到字符。
这是我试过的,但没用..。我做错了什么?谢谢!
$sql = "SELECT * LEFT(' LIKE ',定位于$tablename中的(‘
Parent’,‘LIKE’)-1,Parent= '0‘,并按OrderASC键入类似的'top’ORDER‘;
我想把它用于所有的值,而不仅仅是一个字段。
发布于 2013-06-30 22:32:52
您需要以下语句才能获得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-30 22:33:36
有两件事:(1)您的*和您试图使用LEFT的表达式之间没有逗号;(2)您将like放在引号中,因此函数使用的是常量值like,而不是名为like的列。试着把like放在后面。
SELECT *, LEFT(`Like`, LOCATE('|', `Like`)-1)
...还可以为此使用MySQL SUBSTRING_INDEX函数:
SELECT *, SUBSTRING_INDEX(`Like`, '|', 1)
...https://stackoverflow.com/questions/17395434
复制相似问题