我想将字符串添加,'2')
到数据库中的一行。数据库中的当前字符串如下所示:('1','42','2122','3')
如果我要正常添加它,结果将是:('1','42','2122','3'),'2')
。如何删除已经在数据库中的字符串的最后一个字符,所以它最终会像这样:('1','42','2122','3','2')
我尝试使用concat
and (sub) str_replace
,但这并没有给我想要的结果。
这是否可能仅使用 SQL,而无需先获取记录并更新它?
嗯,可以使用mysql的replace功能
此功能与编辑器中的“查找-替换”对话框非常相似。这将用 'String_Expression' 中的 'REPLACE_String' 替换所有出现的 'FIND_String'
示例-Select REPLACE ('Vipin', 'i', 'X')
输出- VXpXn
语法: Replace ( 'String_Expression', 'FIND_String', 'REPLACE_String' )
文档:http ://www.electrictoolbox.com/mysql-select-replace/
在您的情况下,如果您只有一个右括号,那么您可以使用以下查询来更新您的表格。
PHP 代码
$newString = ",'2')";
$sql = "UPDATE <tableName> SET <fieldName> = replace(<fieldName>, ')', ". $newString .")";
请记住,这将替换 to 的每个实例,')'
因此$newString
该解决方案仅在最后只有一个右括号时才有效。
$result = rtrim($string, ')');
$rest = substr("abcdef", 0, -1); // returns "abcde"
然后使用“。” 添加其余部分。
如果我没有误会你...
$str = "('1','42','2122','3'),'2')";
$new_str = str_replace( ')' , '' , $str) . ')';
// $new_str -- ('1','42','2122','3','2')
$oldtuple = "('1','42','2122','3')";
$newvalue = ",'2')";
$newtuple = substr($oldtuple, 0, strlen($oldtuple)-1).$newvalue;
现在,如果您键入
echo $newtuple;
,您应该会看到以下输出:
('1','42','2122','3','2')
我不知道 MySQL 是否也可以做到这一点,但在 PHP 中我会做这样的事情“:
$string = //get your string from database
$stringtoadd = ",'2')";
$string = substr_replace($string ,"",-1);
$newstring = $string.$stringtoadd;
//put $newstring in database
substr_replace 将用“”(无)替换最后一个字符。
那是你的查询
UPDATE TABLE_NAME set FIELD_NAME = REPLACE(FIELD_NAME, ')', ',YOUR_NUMBER_HERE)')