前一天,我在stackoverflow上询问了这个question。当然,这很好用,但有没有人知道如何在没有涉及任何PHP的MySql语句中做同样的事情?
例如:select preg_replace(:songName,' ', '-') //Ugh, this is wrong.
我要做的是用spaces
替换-
。但有时候,当有空格时,我会得到更多-
例如:Metallica - Hero of the Day
最终为Metallica---Hero-of-the-Day
任何机会做到这一点:Metallica-Hero-of-the-Day
顺便说一句:这不仅仅是我要取代的歌曲名称。
我可以使用简单的MySql替换,但我可以看到执行上述操作需要更多。
答案 0 :(得分:3)
我会首先用连字符替换空格,然后处理可能已经创建的任何多个连字符:
select replace(replace(replace(songTitle, ' ', '-'), '---', '-'), '--', '-')
我已经单独替换了---
和--
,因为有一些边缘情况总体上需要这两种情况,并按此顺序。
请参阅SQLFiddle
答案 1 :(得分:2)
使用这样的用户定义函数(相应地使用delimetres)
CREATE FUNCTION replace_spaceWithHyphen(textToReplace varchar(100))
RETURNS TEXT
BEGIN
DECLARE occHyphen int;
DECLARE occSpace int;
set occHyphen = 1;
set occSpace = 1;
WHILE (occHyphen <> 0 || occSpace <> 0) DO
SELECT LOCATE('--',textToReplace) into occHyphen;
SELECT LOCATE(' ',textToReplace) into occSpace;
SELECT REPLACE(textToReplace,' ','-') into textToReplace;
SELECT REPLACE(textToReplace,'--','-') into textToReplace;
END WHILE;
RETURN textToReplace;
END;
然后按以下方式调用您的选择:
SELECT replace_spaceWithHyphen('Metallica - Hero of the Day');
答案是:
TEXT
Metallica-Hero-of-the-Day
<强> SAMPLE FIDDLE 强>
答案 2 :(得分:0)
这应该有效:
select
replace(
replace(
replace('Metallica - Hero of the Day', '-', ' ')
, ' ', '')
, ' ', '-')
答案 3 :(得分:0)
您可以编写查询。这对你来说很容易。
假设您有一个名为class(id,classname)的表,其中包含两个字段。现在,您可以在类名字段中插入表格,即Metallica - 每日英雄。
现在您可以通过以下给定的程序执行此操作。
mysql_connect('localhost','root','');
mysql_select_db('dbname'); // Please insert your dbname
$query = mysql_query('SELECT classname, REPLACE(classname," ","-") from class');
$record = mysql_fetch_array($query);
echo $record['REPLACE(classname," ","-")'];
它会给出输出。即Metallica ---每日英雄。
如果你用。替换你的查询。我已经从波西米亚语的答案中获得了以下查询的帮助。
$query = mysql_query("SELECT classname, replace(replace(replace(classname, ' ', '-'), '---', '-'), '--', '') from class");
$record = mysql_fetch_array($query);
echo $record["replace(replace(replace(classname, ' ', '-'), '---', '-'), '--', '')"];
您将获得结果,即Metallica-Hero-of-Day
就是这样。容易。
由于
答案 4 :(得分:0)
你可以尝试这种方法。
UPDATE TABLE_NAME SET column_name = REPLACE(column_name, old_value, new_value);
例如
UPDATE TABLENAME SET column_name = REPLACE(column_name, '-', ' ');
希望这会对你有所帮助。