我想将字符串,'2')
添加到数据库中的一行中。数据库中的当前字符串如下所示:('1','42','2122','3')
如果我正常添加它,结果就是:('1','42','2122','3'),'2')
。我如何删除字符串的最后一个字符,它已经在数据库中了,所以它会像这样结束:('1','42','2122','3','2')
我尝试使用concat
和(子)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 .")";
请记住,这将替换')'
到$newString
的每个实例,因此只有当最后只有一个右括号时,此解决方案才能工作。
$result = rtrim($string, ')');
http://php.net/manual/pl/function.rtrim.php
$rest = substr("abcdef", 0, -1); // returns "abcde"
然后使用"。"添加其余部分。
$oldtuple = "('1','42','2122','3')";
$newvalue = ",'2')";
$newtuple = substr($oldtuple, 0, strlen($oldtuple)-1).$newvalue;
现在,如果您键入echo $newtuple;
您应该看到以下输出:('1','42','2122','3','2')
如果我没有误解你。。。
$str = "('1','42','2122','3'),'2')";
$new_str = str_replace( ')' , '' , $str) . ')';
// $new_str -- ('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
substra_replace将最后一个字符替换为"(无)。
这是您的查询
UPDATE TABLE_NAME set FIELD_NAME = REPLACE(FIELD_NAME, ')', ',YOUR_NUMBER_HERE)')