-
是預言機的乙個侷限性,解決的方法有很多種。
例如,下面 c 的 **。
1. 先寫乙個方法,接收2個引數。
引數 1:在 in 中接收資料,例如:'a1','a2',..'a2000' ;
引數 2:需要加入的列的名稱;
public string getsqlin( string sqlparam, string columnname )
int width = "'", 1 ) 1;
string temp = ;
for( int i = 0; i < i += 1000 * width + 3 )
if( i + 1000 * width + 3 ) 1 <
temp = temp + i, 1000 * width + 3 ) 1 )
or " + columnname + " in (";
elsetemp = temp + i, -i );
return temp;
2.使用該方法的返回值**如下:
sql = new "");
select " );
from test t" );
where 1=1 " );
if( >0 )
string sqlstr = getsqlin( col, "colname" );
and in ( " + sqlstr + " )" );
order by " );
3. 執行後得到的SQL字串格式如下:
select t.* from test t where in (59,60) or in (61,62)
這樣就解決了 in 大於 1000 的問題。
-
如果有 10 個數萬條資料怎麼辦?
-
嚇壞了,太神奇了,到目前為止我還沒有遇到過這麼多列的表,這麼多列字元不符合資料庫設計三範的要求
-
1000列是不夠的,你有多麼大的專案。
-
欄位名稱的最大長度為 30 個字元,最大列數為 1000 個字元,因此似乎沒有辦法解決它。
-
它是 1000,請參閱 oracle9i 的虛擬潛在客戶 sql 參考:
the absolute maximum number of columns in a table is 1000. however, when you
create an object table (or a relational table with columns of object, nested table,varray, or ref type), oracle maps the columns of the user-defined types to
relational columns, creating in effect "hidden columns" that count toward the
1000-column limit.
-
這是小費嗎?
ora-01795:列表中的最大表示式數為 1000,你的情況如何?
寫入時列表太多?
如果是這樣,您可以將值拆分並放入資料庫表(臨時表)中,然後關聯它。
-
在SQL中,in後面跟著乙個查詢語句,只要是結果集,對於有沒有數量限制,但是我真的沒遇到過,建議你把你的引數寫成乙個select語句的形式,並實際測試一下。
-
declare
i number;
r number;
str long := '';
beginfor i in 1 ..1000 loopstr := str ||i ||',';
r:=i;end loop;
execute immediate 'select 1 from dual where 1 in (' ||str||to_char(r+1) |')';
end;列表中的最大表示式數為 1000,否則在 oracle 10g 中顯示錯誤訊息: 列表中的最大表示式數為 1000
-
最大數量不應超過 1,000,否則在生成 Oracle 10 GB 訊息時報錯。
ORA-01795:列表中的最大表示式數為 1000
-
有多少個 in() 引數? 你確定要一一寫出這幾百個引數嗎?
你應該變通。
in(),也可以接收 select 查詢語句,例如 select * from emp where deptno in (select deptno from dept)。
-
SQL 語句的長度是有限制的。
-
1. 在約束表結構時,通常建立的約束是系統定義的約束。
2. 但是,在檢視約束定義時,以這種方式建立的約束並不直觀。 並且它的約束命名也是根據系統定義的。
3. 如果表中有多個約束,則很難區分約束指定到哪個字段。 當表上有兩個相同的約束時,尤其如此。
4. 因此,建議在建立約束時使用 constraint 關鍵字建立自定義約束。 以這種方式建立的約束清楚地表明,當您檢視約束時,約束作用於哪個字段。
5. 但是在通過約束自定義約束別名時,請記住約束約束別名; 後面應為字段型別,不能寫在其他地方,否則會報錯,如下圖所示。
-
(1,2,..中的A可以這樣簡單地解決999) or a in (1000,1001,..1999) or ..
或者將 in 儲存在臨時表中,然後關聯查詢! 如:
with t as (
select 1 id from dualunion all
.select 199999 id from dual)select ..從表中 a in (從 t 中選擇 *)。
-
你乙個乙個地寫出來,那還不如整理一張表,寫在表裡,用在(選擇表)裡,這樣就實惠了!
-
給你乙個段落的副本:
該專案在 oracle 中使用,其中
語句中的條件查詢語句。 in(,,括號內的資料數量比較大(這裡是區域查詢的情況),北京下轄區、街道、社群7000多個。 有幾種方法可以解決這個問題。
1. 編寫乙個方法將條件替換為 in(,,,或 in (,or in,)
確保每個 IN 中的資料數不超過 1,000。 問題是在處理這個問題時執行效率低下。 首先,查詢提出了如此多的條件值,然後在查詢中出現了該條件值
條件。。。 2. 建立具有查詢條件的中間臨時表,並在資料庫中進行直接查詢。
select * from table_1 where column_1 in ( select column_2 from
table_2_temp )
ps:我沒有用這種方式...
3.摒棄那種先找出查詢條件,再把條件放到查詢目標結果集的SQL語句中,直接寫入SQL語句的那種SQL語句。
select * from table_1 ,。
where column_1 in ( select column_2 from table_2 ,。
在實現業務成果的同時,也提高了執行效率。
想想執行幾分鐘的 SQL 語句會是什麼樣子......
-
sql> create table test3(name varchar2(4001));
create table test3(name varchar2(4001))
第 1 行錯誤:
ora-00910:對於資料型別 sql 來說,指定的長度太長> create table test3(name varchar2(4000));
已建立表。
解決方法如下: 1.create global temporary table t temp 語句是建立乙個臨時表,oracle 中建立的臨時表有兩種,一種是事務級的,另一種是會話級的,當建立臨時表語句後跟 on commit delete 行時,表示臨時表是事務級的, 在提交保留行時,這意味著臨時表是會話級的。 >>>More
UY是當今已知宇宙中最大的恆星。 它的大小是太陽的50億倍,質量只有太陽的32倍。 已知質量最大的恆星是R136A1,它的質量大約是太陽的265倍。
select top(1)* from table_name order by update_time desc
我的想法是按照修改時間的降序找到第一名的結果,不是嗎? >>>More
當你進行工作面試時,招聘公司會問你:你的優勢是什麼? 當我們遇到這個問題時,我們可以教你乙個方法,讓你在面試中給你加分,增加公司對你的好評!