Mysql SQL:多字符串替换(在大写字母前添加一个空格,以第二个大写字母开头)
我用错误的字符串更新了Mysql SQL:多字符串替换(在大写字母前添加一个空格,以第二个大写字母开头),mysql,sql,Mysql,Sql,我用错误的字符串更新了Name\u表.column\u 2数据。我更新的不是“约翰·史密斯”,而是“约翰·史密斯” 现在我想替换多个字符串,例如:'JohnSmith'为'JohnSmith','JohnDoe'为'JohnDoe'等 我不熟悉SQL,有人能帮我一次替换多个字符串吗 #Name_Table Column_1 Column_2 1 JohnSmith 2 JohnSmith 3 JohnDoe 4
Name\u表.column\u 2
数据。我更新的不是“约翰·史密斯”,而是“约翰·史密斯”
现在我想替换多个字符串,例如:'JohnSmith'
为'JohnSmith'
,'JohnDoe'
为'JohnDoe'
等
我不熟悉SQL
,有人能帮我一次替换多个字符串吗
#Name_Table
Column_1 Column_2
1 JohnSmith
2 JohnSmith
3 JohnDoe
4 JohnSmith
5 WayneRooney
6 JohnDoe
7 WayneRooney
8 JohnSmith
9 WayneRooney
10 JohnDoe
我不知道这种情况下的单一查询,但请尝试以下方法来解决您的问题。我相信这对你很好
$sel = mysql_query('SELECT * FROM Name_Table;');
while($row = mysqli_fetch_array($sel)){
$string = $row['Column_2'];
$count = strlen($string);
$strings = array();
$i = 0;
$ii = 0;
while($i < $count)
{
$char = $string{$i};
if(ereg("[A-Z]", $char, $val)){
$ii++;
$s = '';
$s .= $char;
} else {
$s .= $char;
}
$strings[$ii] = $s;
$i++;
}
$name_with_space = implode(' ',$strings);
mysql_query('UPDATE Name_Table SET Column_2="'.$name_with_space.'" WHERE Column_1='.$row['Column_1']);
}
$sel=mysql\u查询('SELECT*FROM Name\u Table;');
while($row=mysqli\u fetch\u数组($sel)){
$string=$row['Column_2'];
$count=strlen($string);
$strings=array();
$i=0;
二元=0;
而($i<$count)
{
$char=$string{$i};
if(ereg(“[A-Z]”,$char,$val)){
$ii++;
$s='';
$s.=$char;
}否则{
$s.=$char;
}
$strings[$ii]=$s;
$i++;
}
$name_with_space=内爆(“”,$strings);
mysql_查询('UPDATE Name_Table SET Column_2=“”.$Name_with_space.”其中Column_1='.$row['Column_1']);
}
如果您的姓名始终采用FirstnameLastname格式
您可以这样做一个自定义函数
CREATE FUNCTION breakup_name (fullname varchar(50))
RETURNS VARCHAR(50)
BEGIN
SET @fullname = fullname,@newname='',@letter='',@capcount=0,@space='';
WHILE LENGTH(@fullname)>0 DO
SET @letter = LEFT(@fullname,1);
SET @space = '';
IF @letter RLIKE BINARY '[A-Z]' THEN
SET @capcount = @capcount+1;
IF @capcount >= 2 THEN SET @space = ' '; END IF;
END IF;
SET @newname = CONCAT(@newname,@space,@letter);
SET @fullname = RIGHT(@fullname,LENGTH(@fullname)-1);
END WHILE;
RETURN @newname;
END/
然后使用这样的更新
UPDATE table1 SET column_2 = breakup_name(column_2);
另外,在我使用/作为分隔符的SQLFIDLE中,您必须根据您的分隔符来更改它
上述函数将在大写字母前添加一个空格(从第二个大写字母开始),因此,例如,如果您有TommyJaeSmith
,它将返回Tommy Jae Smith
这个函数的逻辑非常简单,它循环遍历并查看每个字母。如果字母为大写字母,则增加一个大写字母,如果大写字母大于或等于2(表示第二个大写字母或之后),则增加一个空格。。。要在字母前面连接。字段名是什么?firstname和lanstname的第一个字母是否始终大写?@IgorVujovic:是的,它将始终大写。我已在问题中添加了(在大写字母前面添加一个空格,以第二个大写字母开头)
,因为我认为这是您要做的。这可能经常发生在人们更新表格而忘记空间的时候。。。希望你的问题能得到很多支持票。