mysql替换函数不是预期的结果

时间:2014-07-16 20:23:14

标签: mysql replace

从名称中选择替换(姓氏,' %%',名字)作为new1;

当我运行它时,返回lastname。为什么?我希望它能搜索names.lastname以获取所有内容(%% wildcard)并返回names.firstname。

我所评论的所有语法都表明我这样做是正确的,看起来很简单......

2 个答案:

答案 0 :(得分:0)

你想要达到什么目标?

我非常确定REPLACE中不允许使用通配符,但是您编写它的方式表明您希望SELECT lastname将其所有字符替换为字符串firstname,与SELECT firstname相同。

如果您需要更改表格中的lastname,则需要运行UPDATE

UPDATE names SET lastname=firstname

如果您只想要两者的连接,那么SELECT CONCAT(lastname,' ', firstname)就是您的游戏。

答案 1 :(得分:0)

<强>为什么吗

REPLACE(lastname,'%%',firstname)不包含两个连续的百分号字符时,表达式lastname将返回lastname。为什么?因为这是REPLACE函数的记录行为。

LIKE一起使用时,&#39;%&#39; 是通配符。 REPLACE()函数中的不是通配符。

您的问题中的表达式将搜索 lastname 的值,以查找两个连续百分号字符的出现次数,并将这些出现次数替换为 firstname中的值

例如:

SELECT REPLACE('fee%%fi%%fo','%%','-dah ') AS foo

foo                
-------------------
fee-dah fi-dah fo  

(我相信这回答了你提出的问题。)