从名称中选择替换(姓氏,' %%',名字)作为new1;
当我运行它时,返回lastname。为什么?我希望它能搜索names.lastname以获取所有内容(%% wildcard)并返回names.firstname。
我所评论的所有语法都表明我这样做是正确的,看起来很简单......
答案 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
(我相信这回答了你提出的问题。)