在 Powerbuilder 内联 SQL 中使用 SQL 转义字符 SQL
Using SQL escape characters in Powerbuilder inline SQL
我正在尝试替换内联 SQL 语句中的单引号字符。
在 SSMS 中:
SELECT REPLACE('test''test', '''', '')
Result: testtest
在 Powerbuilder 中:
SELECT REPLACE(fieldname, '''', '')
INTO :ls_string
FROM tablename;
Result: 'Incorrect syntax near ''.
基本上,Powerbuilder 会抱怨语法问题,因为它不知道如何处理 SQL 的转义字符。如果我改用 Powerbuilder 的转义字符('~''
与 ''''
作为 REPLACE 的第二个参数),SQL 服务器抱怨开引号。
如有任何建议,我们将不胜感激。
您可能必须将语句放入您在应用程序中用作数据窗口或数据存储的数据窗口对象(使用 SQL 引号转义方法)或执行 SQL函数或存储过程。如果你走函数路线,你可以像你的例子一样在 Powerscript 中的嵌入 SQL 语句中调用它。
类似
SELECT ufReplaceTwoQuotes INTO :ls FROM myTable USING SQLCA;
第三种选择是检索您的数据,然后在 Powerscript 中进行替换(但随后您必须努力在 PowerBuilder 中转义单引号)。
我正在尝试替换内联 SQL 语句中的单引号字符。
在 SSMS 中:
SELECT REPLACE('test''test', '''', '')
Result: testtest
在 Powerbuilder 中:
SELECT REPLACE(fieldname, '''', '')
INTO :ls_string
FROM tablename;
Result: 'Incorrect syntax near ''.
基本上,Powerbuilder 会抱怨语法问题,因为它不知道如何处理 SQL 的转义字符。如果我改用 Powerbuilder 的转义字符('~''
与 ''''
作为 REPLACE 的第二个参数),SQL 服务器抱怨开引号。
如有任何建议,我们将不胜感激。
您可能必须将语句放入您在应用程序中用作数据窗口或数据存储的数据窗口对象(使用 SQL 引号转义方法)或执行 SQL函数或存储过程。如果你走函数路线,你可以像你的例子一样在 Powerscript 中的嵌入 SQL 语句中调用它。
类似
SELECT ufReplaceTwoQuotes INTO :ls FROM myTable USING SQLCA;
第三种选择是检索您的数据,然后在 Powerscript 中进行替换(但随后您必须努力在 PowerBuilder 中转义单引号)。