Ⅰ 求助一個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