C/C++教程

Oracle数据库中的字符串表示

本文主要是介绍Oracle数据库中的字符串表示,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

字符串字面量

字符串字面量是指在表达式、条件语句、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

这篇关于Oracle数据库中的字符串表示的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!