oracle的sql語句where語句中nvl函式的參

2022-03-01 08:48:11 字數 5683 閱讀 6316

1樓:匿名使用者

引用樓主:「其實我就是為了解決前臺傳來的某個條件為空值時,對應的那個條件就不要;不為空時,對應的那個條件就用上」

不用這麼麻煩,你在程式中判斷傳來的變數為空時,把條件放到一個字串中,如:string str=「 where 1=1 」 ; str=" and 欄位="+變數; 然後把這個str追加到你的sql當中不就可以了

oracle sql查詢中,如何在where中用條件語句,判斷不同情況,追加不同的and條件? 30

2樓:用著追她

1、先創

copy建一個簡單的資料表bai

。2、插入資料,順便復du習插入資料了,最好多插zhi幾個,查詢的時候dao更明顯。

3、select後面的欄位是等下查詢結果所顯示的,where就是限制的條件,根據where查詢到對應的列。

4、如果欄位裡面有數字的話也是可以根據數字大小進行查詢的。

5、加入and語句可以同時限制兩個條件來查詢。

6、用%來查詢,百分號在字母前表示以什麼字母開頭的,這裡就是以名字為d開頭來查詢資料,同理把%放在後面就是以d結尾的名字。

3樓:匿名使用者

你是不是描述的有bai錯誤?怎麼兩du次都zhi是username不為空?

估計可以有好幾個:dao

1、可以用專union all

select * from table where 1=1 and (username is not null and instr(username , '李四') > 0)

union all

select * from table where username is null

2、你寫的屬這個好像or and的邏輯有問題,可以改改

select * from table where 1=1

and ((username is not null and instr(username , '李四') > 0) or (username is null))

理解錯誤的話請糾正

oracle 資料庫,使用sql 的select where 語句

4樓:匿名使用者

在c#中使用 sql語句

首先注意兩點、 第一 語句的構造是否正確, 第二 與程式互動時。使用到的一些變數

1. 在sql語句中。 如果某個欄位的資料型別不為 數字形式 那麼。 在sql語句中 條件判斷...都需要用到 (兩個單引號)將資料 括起來; 例如:

表[student] id(自動編號) uid(學號) uname(學生姓名)

-->查詢(名字是李世民的學生資訊) :

select uid, uname from student where uname = '李世民'

2.在c#中,string 型別的變數需要使用(兩個雙引號) 「」 括起來

結合以上兩點、 在 c#中 拼湊 sql 查血語句 你就可以這樣使用

string str_sql = " select uid, uname from student where uname = '' " ;

1.首先把你的sql語句構造好。 不要先加變數

string str_sql = " select uid, uname from student where uname = ' 「+ +」 ' " ;

2.在需要使用變數的位置 用(兩個雙引號)將這句話分開。 現在它只不過是字串而已;

在這其中, 你可以看出來 後加入的兩個雙引號, 一個是用來結束啊 最開頭的 雙引號。

一個是用來匹配結尾的雙引號。

---->在c#語句中。 使用 兩個雙引號 將字串括起來。 注意一定要成對

---->連線兩個字串所有的操作符 是 + 號

string str_sql = " select uid, uname from student where uname = ' "+ 變數 +" ' " ;

總結:雙引號 「 和 加號 + 是c#中的定界符 兩個雙引號之中的字元都被程式認定為字串不參與任何計算或是程式的執行。 單單是字串。

而加號。 是連線兩個字串的 定界符。

比如 string str_print = 」我是「 + 」天下第一「; 那麼 變數 str_print的值為 我是天下第一

單引號 ' 是sql語句中對資料型別為字元型別的欄位使用的 nvarchar ntext nchar 。。。這些都是

5樓:匿名使用者

可直接在第三方軟體中執行,也可在oracle自帶的sqlplus中執行。

一、第三方軟體(如plsql)

1、登入到指定資料庫。

2、點選左上角像紙片的按鈕,選擇sql視窗。

3、編寫select where的語句後,點選執行按鈕,如圖:

4、則資料內容會顯示在下方:

二、用oracle自帶的sqlplus執行1、點選開始選單,在搜尋框輸入「cmd」並回車,進入命令提示符。

2、輸入「sqlplus」,然後回車。

3、正確填寫使用者名稱及密碼,登入成功後會有提示,如圖:

4、輸入查詢語句,並一定要以分號結尾。

5、點選回車,即可出現結果,如圖:

6樓:

你資料庫中的欄位是

char型

還是varchar2型?

如果是char型,你設定的長度超過了,你現在要檢索的長度,資料庫會自動補空格。

所以你檢索的時候,也要補上空格,才能檢索出來。

7樓:匿名使用者

你把一個單引號改成兩個單引號試試,即:』computer a』 改成 『』computer a』』

8樓:匿名使用者

用的是什麼讀取命令,**發來看看

sql語句,如何將一個欄位中的一部分字串作為條件查詢

9樓:匿名使用者

select *

from 表

where substring(code,2,1)=0 and substring(code,3,1)=0 and substring(code,4,1)=0 and  substring(code,5,1)=0

orselect *

from 表

where substring(code,2,4)='0000'

10樓:雙子

select * from table  where code%10000 = 0

直接求模取餘,能整除10000的就是尾數就是4個0

11樓:匿名使用者

select * from table where length(column) = 某個值

length()是計算字串長度的函式,不同的資料庫,可能不一樣。

12樓:匿名使用者

使用sql的substr函式即可。

該方式格式如下:

substr( string, start_position, [ length ] );

string:源字串;

start_position:提取的位置,字串中第一個位置始終為1;

[ length ]:提取的字元數,如果省略,substr將返回整個字串;

函式功能:擷取函式,可以實現提取字串中指定的字元數;

針對本例舉例說明:

select * from 表名 where substr([d],1,2)=「10」

語句功能說明:從指定表中查詢d欄位第1、2個字元為「10的記錄」。

13樓:匿名使用者

字元型的話:where code like '_0000'

整形的話(oracle資料庫):where code%10000=0

db2資料庫的話貌似求餘符號%不行:where mod(code,10000)=0 (用這個就對了)

14樓:匿名使用者

where right(code,4)='0000'

如何優化oracle在where條件中用了自定義函式的sql語句

15樓:匿名使用者

where子句中對欄位進行函式操作,這將導致引擎放棄使用索引而進行全表掃描。

因為sql只有在執行時才會解析區域性變數,但優化程式不能將訪問計劃的選擇推遲到執行時;它必須在編譯時進行選擇。然而,如果在編譯時建立訪問計劃,變數的值還是未知的,因而無法作為索引選擇的輸入項。

sql server和oracle中sql語句一樣嗎?

16樓:千鋒教育

oracle與sql server都遵循sql-92標準:

區別如下:

1.oracle中表名,欄位名,儲存過程名,變數名不能超過30個字串長度。

2.oracle中不支援top 語法。使用whererownum < n 代替。但需要注意如果在top前有排序的操作,則需要先排序在利用rownum取得。

3.oracle中游標的使用與sqlserver中有挺大差別,主要是在迴圈控制方面不一致。

在oracle中如果某列是date型別,那麼它預設的格式是yyyy-mm-dd,如果使用where coldate = 『2005-06-08 17:14:57』就會出錯,『2005-06-08』可以。

如果此時需要精確比較時間(小時,分,秒),可以採用下列方法:to_date('2005-6-8 17:14:

57','yyyy-mm-dd hh24:mi:ss')。

由於oracle和sqlserver在datetime上對sql標準的拓展實現方式不同,因此不能用同一個sql實現。

4.oracle中的timestamp(時間戳)與sqlserver中的差別很大。sqlserver中的timestamp是二進位制格式儲存在資料庫中,可以將dataset中的這個欄位型別設定為base64binary型別。

oracle中的timestamp是時間格式儲存的。因此,無法用同一個dataset既裝載sqlserver的timestamp,有裝載oracle的timestamp.由於在應用程式中很少用到這個值,因此可以不檢索這個欄位。

5.oracle中的timestamp不能像sqlserver在傳入資料的時候自動填充,可以設定預設值systimestamp來實現類似功能。

6.oracle中沒有boolean的欄位型別,可以用intger或者char代替sqlserver中的bit型別。

7.oracle中會將」」空字串當多null處理,也就是說,當應用程式往資料庫中插入一個空字串時,實際資料庫會嘗試插入一個null。如果這個欄位是notnull型別,那麼就會出錯,這種情況下可以用別的預設值代替空字串。

當從sqlserver匯入資料到oracle的時候,在notnull列上的空字串會導致匯出操作失敗。此時可以在匯出嚮導中手工修改sql指令碼,將空字串設定成一個特殊值。

8.oracle中不支援,select . . into建立新表,要用create table 表名as select 語句 ,建立新表。

9.在oracle中連線字串用 『||』 或concat(col1,col2)函式,不能使用『+』。

統配符 ,[^] ,oracle好像也不支援。

如何檢視oracle中sql語句的執行時間

第三方工具pl sql的最下一行是執行時間 如果是sqlplus那麼就先set timing on,然後執行語句,執行完畢後就能看到執行時間。通過oracle執行計劃可以看到sql的執行時間。explain plan for select from table select from table d...

sql語句問題,sql語句問題

group by是分組函式 描述可能不準確 count是聚合函式,一定要確定分組的維度,才能在該維度下使用聚合函式進行統計,你要新增dname,那麼dname應該和deptno一起作為統計的維度,又dname在dept表中需要進行表關聯,所以 sql select deptno,dname,coun...

Sql語句的TOP用法有哪些,Sql語句的TOP用法

top的域名你值得擁有 新國際頂級域,你值得擁有.top top子句用於規定要返copy 回的記錄的數目。對於擁有數千條記錄的大型表來說,top 子句是非常有用的。sqlserver 的語法 select topnumber percent column name s from table name...