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)