oracle中现在'||replace(view_name,'V_GLA_FASP', 'FASP')||'那个地方报错这个地方单引号有问题,是这样的 我把v_sql:=对应的代码用单引号括起来的嘛 但sql脚本本来就包含单引号所以我把sql本身里面的单引号转义成了两个单引号,但是||这个里面还是需要涉及到replace需要单引号 这个单引号我用什么来转义?
单引号有什么问题?如果在字符串中需要加单引号 那就是写三个就好了
select ''||'replace(view_name,'||'''V_GLA_FASP'','||'''FASP'''||')'||''
from dual;
您可以使用两个单引号来转义一个单引号,例如:
v_sql := 'SELECT * FROM table WHERE name = ''Tom''';
在您的代码中,您可以这样修改:
v_sql := 'SELECT * FROM ' || replace(view_name, 'V_GLA_FASP', 'FASP') || ' WHERE name = ''Tom''';
这将在替换视图名称后正确转义单引号。
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
在Oracle中,单引号可以通过双单引号来转义。例如,如果你要插入文本“Don't”,你应该写成“Don''t”。
对于你的情况,你可以在||
连接符中使用双单引号来表示单引号。下面是一个例子:
DECLARE
v_sql VARCHAR2(1000);
BEGIN
v_sql := 'SELECT * FROM ' || replace(view_name,'V_GLA_FASP', 'FASP') || ' WHERE name = ''John''';
--注意上面一整行中的单引号和双单引号的使用
dbms_output.put_line(v_sql);
END;
/
在上面的代码中,name = ''John''
中间的两个单引号表示字符串“John”的两边,而连接符||
左边的' WHERE name = '
和右边的空字符串分别用双单引号表示了单引号。
如果我的回答解决了您的问题,请采纳!
在oracle单引号转义,declare中单引号转义的话,首席可以使用双单引号代替单引号完成对单引号的转义,比如:
SELECT*FROM table WHERE column = 'Tom""s house'
表示Tom's house
其次,也可以使用用反斜杠转义符转义单引号,同上一个列子:
```sql
SELECT*FROM table WHERE column = 'Tom\'s house'