日期:2014-05-17  浏览次数:20871 次

Oracle编程时遇到的字符连接串疑惑
本人仅知道连接字符串
SELECT ename  ||' is a '|| job FROM emp;
比如此句显示的就是类似MIKE is a Manager的结果;
那么语句中
v_sql:='select * from (select t1.*, rownum rn from (select * from '||tableName||') t1 where rownum<='||v_end||') where rn>='||v_begin;  
''与||需要怎么理解,具体指的就是||与''的用法?''到底是怎么将此sql分句的?其中tableName、v_begin、v_end、v_sql均为变量


'select * from (select t1.*, rownum rn from (select * from '            ||tableName||              
') t1 where rownum<='            ||v_end||              
') where rn>='              ||v_begin
三部分

还是
where rownum<='||v_end||'
select * from '||tableName||') t1 where rownum<='||v_end||'
'select * from (select t1.*, rownum rn from (select * from '||tableName||') t1 where rownum<='||v_end||') where rn>='
三部分呢

个人倾向于第一种

------解决方案--------------------
没看懂LZ到底是要问什么东西。

------解决方案--------------------
就是字符串的连接
'XXX'就是字符串
至于书写的格式 全看自己喜欢。
------解决方案--------------------
oracle里面是以单引号表示字符串的,所以在写动态sql的时候如果sql中含有单引号的字符串,就需要在增加一个'以便解析的时候使用到。

------解决方案--------------------
是连字符,'abc'是个字符串常量,单引号表示它的起止,输出时不会显示出来。

如果我想把它和别的串连接,可以'abc'
------解决方案--------------------
'de',当然这么做比较傻,一般直接写'abcde'

也可以'abc'
------解决方案--------------------
v_col1 ,v_col1是个变量

多个变量连接可以用v_col1
------解决方案--------------------
v_col2
------解决方案--------------------
v_col3

一般都是变量出现在常量的中间,所以一般是
'and a = '
------解决方案--------------------
v_col1
------解决方案--------------------
' and b < '
------解决方案--------------------
v_col2
------解决方案--------------------
' and c > '
------解决方案--------------------
v_col3....

最后打印出来是 a = 1 and b < 2 and c > 3

如果在字符中要表示单引号,需要用两个,以区别起止,比如'I''m'输出是 I'm。

如果觉得容易出错,可以用chr(39)代替单引号 'I'
------解决方案--------------------
chr(39)
------解决方案--------------------
'm'输出也是 I'm。