Ⅰ 求助一个oracle中sql语句动态拼接的问题
MSSQL到ORACLE还是有不小的差距。
如果在MSSQL里,可以这样:
declare @sql nvarchar(max);
declare @tableName nvarchar(100);
set @sql = 'OPEN PCURSOR FOR
SELECT T.ID as OBJECTID,T.SHAPE.GET_WKT() as COORD
FROM ' + @tableName + ' T
WHERE instr(@OBJIDS,'',''||TO_CHAR(ID)||'','')>0';
sp_execute @sql, @OBJIDS=OBJIDS
(没用Sql验证,单词拼写可能有错误,语法也可能有错误)
Ⅱ Oracle [存储过程] 执行动态拼接SQL语句并返回结果
建议你用 instr函数,v_sql条件改为
where instr(p_jbm,t.jbm)>0试试吧。
Ⅲ oracle中sql语句如何动态拼接
因为'x'||to_char(sysdate,'dd')=‘xxxx’这个条件不满足,所以查询不到数据。
'x'||to_char(sysdate,'dd')明显不等于'xxxx',能查询到数据就是怪事了。
如果你想查询到数据,必须保证'x'||to_char(sysdate,'dd')的值等于'xxxx'
就拿今天来说'x'||to_char(sysdate,'dd')的值肯定是x24。
'xxxx'的值是为xxxx,不等于x24。肯定查询不到数据。
你这个语句就跟
select name from A where 1>2这个语句的效果一样。
如果你的xxxx表示你表中的一个字段,比如X1,X2..X31,
如:
select name from A where 'x'||to_char(sysdate,'dd')=x24;
你做关联的是用你的字段名,但是判断取值的是时候,却是取的x24这一列里面的值。
如果x24这一列里面有一列的值是x24,肯定查得出数据,如果没有,肯定就查不出来,
你先确实有没得x24这条数据记录了来。。
Ⅳ 1、sql查询语句时怎么把几个字段拼接成一个字段这几个字段是整型的。
1、语句如下:
select 字段A, 字段B, 字段A + 字段B as 字段C From 表1
注:字段A加上字段B的计算列命名为字段C
2、计算列
计算列由可以使用同一表中的其他列的表达式计算得来。表达式可以是非计算列的列名、常量、函数,也可以是用一个或多个运算符连接的上述元素的任意组合。表达式不能为子查询。
原题的答案就是“计算列”。
(4)oracle中sql语句拼接扩展阅读:
计算列应用范围
计算列可用于选择列表、WHERE 子句、ORDER BY 子句或任何可使用正则表达式的其他位置,但下列情况除外:
用作 CHECK、FOREIGN KEY 或 NOT NULL 约束的计算列必须标记为 PERSISTED。如果计算列的值由具有确定性的表达式定义,并且索引列中允许使用计算结果的数据类型,则可将该列用作索引中的键列,或者用作 PRIMARY KEY 或 UNIQUE 约束的一部分。
例如,如果表中含有整数列a和b,则可以对计算列a+b创建索引,但不能对计算列a+ DATEPART(dd,GETDATE()) 创建索引,因为在后续调用中,其值可能发生改变。
计算列不能作为 INSERT 或 UPDATE 语句的目标。
数据库引擎基于使用的表达式自动确定计算列的为 Null 性。即使只有非空列,大多数表达式的结果也“认为”可为空值,因为下溢或溢出生成的结果也可能为空。使用带AllowsNull属性的 COLUMNPROPERTY 函数可查明表中任何计算列的为 Null 性。
通过指定 ISNULL (check_expression,constant) 可以将可为空值的表达式转换为不可为空值的表达式,其中,constant是可替换所有空结果的非空值。
网络.计算列
Ⅳ oracle这种的怎么写sql拼接到一起
oracle中只有这样的拼接了,除非你想用concat。不过此处concat肯定不适合你。
到到效果就可以了,而且性能还不差,何必一定要用append呢。
declarea varchar2(100);b varchar2(100);c varchar2(100);str varchar2(32767);i number;beginstr:='';a:='aa';b:='bb';c:='cc';loopi=i+1; if i=1 thenstr:=a||b;elsestr:=str||c;end if; exit when i=100;end loop;dbms_output.put_line(str);end;
Ⅵ oracle 求sql拼接方式
oracle中只有这样的拼接了,除非你想用concat。不过此处concat肯定不适合你。
到到效果就可以了,而且性能还不差,何必一定要用append呢。
declare
avarchar2(100);
bvarchar2(100);
cvarchar2(100);
strvarchar2(32767);
inumber;
begin
str:='';
a:='aa';
b:='bb';
c:='cc';
loop
i=i+1;
ifi=1then
str:=a||b;
else
str:=str||c;
endif;
exitwheni=100;
endloop;
dbms_output.put_line(str);
end;
Ⅶ Oracle中SQL语句连接字符串的符号使用介绍
Oracle中SQL语句连接字符串的符号为||
复制代码
代码如下:
select
catstr(tcdm)
||
(',')
from
T_YWCJ_RWCJR
where
cjrjh='009846'
and
rwid='12050'
and
jsdm='CJY'
拼接成一条数据并连接一个","
Ⅷ SQL怎么拼接字符串
不同的数据库,相应的字符串拼接方式不同,通过对比加深一下记忆。
一、MySQL字符串拼接
1、CONCAT函数
语法格式:CONCAT(char c1, char c2, ..., char cn) ,其中char代表字符串,定长与不定长均可以
连接两个字符串
(8)oracle中sql语句拼接扩展阅读
字符串函数(String processing function)也叫字符串处理函数,指的是编程语言中用来进行字符串处理的函数,如C,pascal,Visual以及LotusScript中进行字符串拷贝,计算长度,字符查找等的函数。
字符串主要用于编程,概念说明、函数解释、用法详述见正文,这里补充一点:字符串在存储上类似字符数组,所以它每一位的单个元素都是可以提取的,如s=“abcdefghij”,则s[1]=“a”,s[10]="j"。
而字符串的零位正是它的长度,如s[0]=10(※上述功能Ansistring没有。),这可以给我们提供很多方便,如高精度运算时每一位都可以转化为数字存入数组。
字符串函数的应用
1、连接运算 concat(s1,s2,s3…sn) 相当于s1+s2+s3+…+sn.
例:concat(‘11’,'aa’)='11aa’;
2、求子串。 Copy(s,I,I) 从字符串s中截取第I个字符开始后的长度为l的子串。
例:(‘abdag’,2,3)=’bda’
3、删除子串。过程 Delete(s,I,l) 从字符串s中删除第I个字符开始后的长度为l的子串。
例:s:=’abcde’;delete(s,2,3);结果s:=’ae’
4、插入子串。 过程Insert(s1,s2,I) 把s1插入到s2的第I个位置
例:s:=abc;insert(‘12’,s,2);结果s:=’a12bc’
5、求字符串长度 length(s) 例:length(‘12abc’)=5
在ASP中 求字符串长度用 len(s)例: len("abc12")=5
6、搜索子串的位置 pos(s1,s2) 如果s1是s2的子串 ,则返回s1的第一个字符在s2中的位置,若不是子串,则返回0.
例:pos(‘ab’,’12abcd’)=3
7、字符的大写转换。Upcase(ch) 求字符ch的大写体。
例:upcase(‘a’)=’A’
8、数值转换为数串。 过程 Str(x,s) 把数值x化为数串s.
例:str(12345,s); 结果s=’12345’
9、数串转换为数值。 过程val(s,x,I) 把数串s转化为数值x,如果成功则I=0,不成功则I为无效字符的序数,第三个参数也可不传
例:val(‘1234’,x,I);结果 x:=1234