Oracle数据库中的字符串表示

时间:2021-06-25 17:10:34   收藏:0   阅读:0

字符串字面量

字符串字面量是指在表达式、条件语句、SQL函数,SQL语句中字符串的表示。一般情况下字符串是从一个单引号开始到一个单引号结束,但存在一些特殊情况,比如字符串本身含有单引号,这会让数据库误以为应该结束字符串而导致错误,或含有一些其他特殊字符。下面简单介绍Oracle数据库中字符串字面量如何正确表示来解决上面的问题。

形式一

使用单引号开头和结尾,中间部分为字符串。下面是例子
‘Hello‘
‘ORACLE.dbs‘
‘Jackie‘‘s raincoat‘
‘09-MAR-98‘

如果字符串中出现单引号,则使用两个连续的单引号将第二个单引号转义。例如‘I‘‘m a teacher.‘

形式二

使用q或者Q+单引号+一个开始引用定义字符开头,以结束引用定义字符+单引号结尾,则在其中的部分都视作一个字符串。引用定义字符不能为空格、tab和回车。如果开始转义字符为括号类字符的左部分(([{<),则结束转义字符必须为相匹配的括号右半部分()]}>)。其他情况结束转义字符和开始转义字符相同。

例如
q‘!name LIKE ‘%DBMS_%%‘!‘
q‘<‘So,‘ she said, ‘It‘s finished.‘>‘
q‘{SELECT * FROM employees WHERE last_name = ‘Smith‘;}‘
nq‘? ?1234 ?‘
q‘"name like ‘[‘"‘

使用这种形式作为插入语句的字面量例子

-- 使用!作为引用定义字符
INSERT INTO t2(name) VALUES (q‘!name LIKE ‘%DBMS_%%‘!‘)

-- 使用<作为引用定义字符
INSERT INTO t2(name) VALUES (q‘<‘So,‘ she said, ‘It‘s finished.‘>‘)

-- 使用{作为开始引用定义字符,结束引用定义字符应该为对应的}
INSERT INTO t2(name) VALUES (q‘{SELECT * FROM employees WHERE last_name = ‘Smith‘;}‘)

-- 使用特殊字符?作为引用定义字符
INSERT INTO t2(name) VALUES (q‘? ?1234 ?‘)

-- 使用双引号"作为引用定义字符
INSERT INTO t2(name) VALUES (q‘"name like ‘[‘"‘)

-- 也可使用单引号‘作为引用定义字符,但会导致可读性下降
INSERT INTO t2(name) VALUES (q‘‘‘OK‘, she said.‘‘)

对应的插入结果
技术图片
参考资料:oracle 11g sql reference

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!