3

我想字符串添加,'2')到数据库中的一行。数据库中的当前字符串如下所示:('1','42','2122','3') 如果我要正常添加它,结果将是:('1','42','2122','3'),'2')。如何删除已经在数据库中的字符串的最后一个字符,所以它最终会像这样:('1','42','2122','3','2') 我尝试使用concatand (sub) str_replace,但这并没有给我想要的结果。

这是否可能仅使用 SQL,而无需先获取记录并更新它?

4

7 回答 7

5

嗯,可以使用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该解决方案仅在最后只有一个右括号时才有效。

于 2012-08-04T10:25:19.620 回答
4
$result = rtrim($string, ')');

http://php.net/manual/pl/function.rtrim.php

于 2012-08-04T10:00:26.633 回答
3
$rest = substr("abcdef", 0, -1);  // returns "abcde"

然后使用“。” 添加其余部分。

于 2012-08-04T10:01:50.393 回答
2

如果我没有误会你...

$str = "('1','42','2122','3'),'2')";

$new_str = str_replace( ')' , '' , $str) . ')';

// $new_str -- ('1','42','2122','3','2')
于 2012-08-04T10:09:39.823 回答
2
$oldtuple = "('1','42','2122','3')";
$newvalue = ",'2')";
$newtuple = substr($oldtuple, 0, strlen($oldtuple)-1).$newvalue;

现在,如果您键入
echo $newtuple;
,您应该会看到以下输出:
('1','42','2122','3','2')

于 2012-08-04T10:17:56.537 回答
1

我不知道 MySQL 是否也可以做到这一点,但在 PHP 中我会做这样的事情“:

$string = //get your string from database
$stringtoadd = ",'2')";


$string = substr_replace($string ,"",-1);
    $newstring = $string.$stringtoadd;
//put $newstring in database

substr_replace 将用“”(无)替换最后一个字符。

于 2012-08-04T10:03:10.033 回答
1

那是你的查询

UPDATE TABLE_NAME set FIELD_NAME = REPLACE(FIELD_NAME, ')', ',YOUR_NUMBER_HERE)')

于 2012-08-04T10:34:59.953 回答