Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如何在MySQL中编辑字段,其中fieldData=';字符串';新值';String.a';?_Database_Mysql - Fatal编程技术网

Database 如何在MySQL中编辑字段,其中fieldData=';字符串';新值';String.a';?

Database 如何在MySQL中编辑字段,其中fieldData=';字符串';新值';String.a';?,database,mysql,Database,Mysql,在我的数据库中有一个VARCHAR类型的字段(让我们在field1中命名),在某些情况下,我想找到特殊记录并编辑field1的值,我的查询必须能够读取field1的当前值,并在其末尾添加特殊字符串,如“.a”。我猜查询应该是这样的: UPDATE TableName SET field1 = CurrentValue +'a' WHERE field1 = CurrentValue ; 但它并不完整,而且存在错误。你能帮帮我吗 您正在查找SET field1=CONCAT(field1,'a'

在我的数据库中有一个VARCHAR类型的字段(让我们在field1中命名),在某些情况下,我想找到特殊记录并编辑field1的值,我的查询必须能够读取field1的当前值,并在其末尾添加特殊字符串,如“.a”。我猜查询应该是这样的:

UPDATE TableName SET field1 = CurrentValue +'a' WHERE field1 = CurrentValue ;

但它并不完整,而且存在错误。你能帮帮我吗

您正在查找
SET field1=CONCAT(field1,'a')

你说你有错误的程序对我有用:

mysql> create database test;
Query OK, 1 row affected (0.00 sec)

mysql> create table test.Files (Name text) select 'MyFile' Name;
Query OK, 1 row affected (0.10 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> delimiter //
mysql> CREATE PROCEDURE test.Rename (CurrentName Text) BEGIN UPDATE test.Files SET Name = CONCAT(Name , 'a') WHERE Name = CurrentName; END//
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;
mysql> call test.Rename('MyFile');
Query OK, 1 row affected (0.00 sec)

mysql> select * from test.Files;
+---------+
| Name    |
+---------+
| MyFilea |
+---------+
1 row in set (0.00 sec)

对于您的答案,我运行了以下命令:“updatetablename SET field1=CONCAT(field1,'a'),其中field1='DesiredString';”我得到了这个错误:“错误代码:1292截断了不正确的双精度值:'a'”,我想这是因为您的列类型。列字段1的类型是什么?您定义的varchar长度是多少?也许它超出了这个范围。@rain:这个(误导性的)错误有时可能是由错误的语法造成的;您能否在不使用泛型替换替换表、列和值的情况下显示正在运行的确切语句?@rain:您有一个名为Rename的过程,但您正在调用一个名为Files的过程?另外,您确定是在测试数据库中创建的过程,而不是其他过程吗?很抱歉,我在这里编写的call语句是错误的,主call语句是true:'call test.rename('MyFile');',我确信问题不在于调用或选择数据库,我有将近15个表和12个例程,它们都能正常工作。现在我的重命名过程有两个参数,分别是“CurrentName”和“NewName”,我在例程体中使用了这个命令:“SET Name=NewName,其中Name=CurrentName”。在我的程序中,我使用了类似于NewName的命令:=CurrentName+'a'它对我有效,但我不知道它是如何工作的“SET F1=CONCAT(F1,'a')你测试过它吗