Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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/9/delphi/8.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
Sql server 作为列名处理的文本_Sql Server_Delphi - Fatal编程技术网

Sql server 作为列名处理的文本

Sql server 作为列名处理的文本,sql-server,delphi,Sql Server,Delphi,这在SQL Server 2014上运行正常: UPDATE MYTABLE SET MYFIELD = MYFIELD + 'the quick brown fox jumped over the lazy dog' + CAST(FOR_DATE AS VARCHAR(30)) 将其移植到Delphi中的查询: SQL.Text := UPDATE MYTABLE SET MYFIELD = MYFIELD + "the quick brown fox j

这在SQL Server 2014上运行正常:

UPDATE MYTABLE 
SET MYFIELD = MYFIELD + 'the quick brown fox jumped over the lazy dog'
              + CAST(FOR_DATE AS VARCHAR(30))
将其移植到Delphi中的查询:

 SQL.Text := UPDATE MYTABLE SET MYFIELD = MYFIELD
 + "the quick brown fox jumped over the lazy dog"
 + CAST(FOR_DATE AS VARCHAR(30)) 
这会引发一个错误:

那只敏捷的棕色狐狸跳过了那只懒狗,被当作纵队对待 名字

文本周围的单引号也不起作用


我遗漏了什么?

此查询应该可以做到这一点,您可以使用该函数在字符串中包含引号:

SQL.Text := 'UPDATE MYTABLE SET MYFIELD=MYFIELD + ' + 
             QuotedStr('the quick brown fox jumped over the lazy dog') + 
             '+ CAST(FOR_DATE as varchar(30))';
或者,如果要在字符串中包含引号,则需要将其加倍:

SQL.Text := 'UPDATE MYTABLE SET MYFIELD=MYFIELD + ' + 
            '''the quick brown fox jumped over the lazy dog''' + 
            '+ CAST(FOR_DATE as varchar(30))';
最后,更好、更安全的方法是使用参数化查询,这是防止:


您应该改用参数化查询,让它为您处理引号:SQL.Text:=“updatemytable SET MYFIELD=MYFIELD+:MyText+CASTFOR_DATE AS VARCHAR30”;parabyname'MyText'。AsString:=“敏捷的棕色狐狸跳过了懒狗”;
SQL.Text := 'UPDATE MYTABLE SET MYFIELD = MYFIELD + :MyText'+
            ' + CAST(FOR_DATE AS VARCHAR(30))'; 
ParamByName('MyText').AsString := 'variable text';