當前位置:首頁 » 編程語言 » javasqlwherein
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

javasqlwherein

發布時間: 2022-07-23 14:22:35

1. 關於sql語句添加where條件問題,用java語句

對字元串的合法性判斷應該放到頁面上去,可以採用正則表達式,寫到script腳本里去。這樣首先就做到了從頁面傳來的信息都是合法的。
聲明一個字元串變數sql,初始化為where前的sql語句。
聲明一個整形變數count,初始化為0;
將從頁面得到的信息進行判斷,如果為空值則不加到sql後,如果不為空值,則先count++ ,再判斷count是否為1,如果是1,那將條件直接加到sql語句之後,如果大於1,那麼就在條件之前加"and"。

2. java怎麼像sql的where條件那樣處理list裡面的數據

public static void main(String[] args){
vo vo1 = new vo("張三",12,"武漢");
vo vo2 = new vo("李四",12,"武漢");
vo vo3 = new vo("王五",12,"北京");
List<vo> list = Arrays.asList(vo1,vo2,vo3);

//條件
vo vo4 = new vo("",null,"武漢");

if(vo4.getName() != null && !"".equals(vo4.getName())){
list = list.stream().filter(vo -> vo.getName().equals(vo4.getName()))
.collect(Collectors.toList());
}
if(vo4.getAge() != null){
list = list.stream().filter(vo -> vo.getAge().equals(vo4.getAge()))
.collect(Collectors.toList());
}
if(vo4.getCity() != null && !"".equals(vo4.getCity())){
list = list.stream().filter(vo -> vo.getCity().equals(vo4.getCity()))
.collect(Collectors.toList());
}

list.stream().forEach(vo -> {
System.out.println(vo);
});
}


3. 求幫忙一個java的sql語句拼接,條件是 in 包括!

//不知道你usr_id怎麼傳入,現假設ids=[101,102]
Stringsql="select*fromusr_infouwhereu.usr_idin("
StringBuildersd=newStringBuilder(sql);
for(inti=0;i<ids.length();i++){
//實際操作,就是添加"'101『,"
sb.append("'").append(ids[i]).append("',");
}
sb.deleteAt(sb.length-1);//刪除最後一個逗號

sb.append(");");

System.out.print(sb.toString());

4. Java sql實現聯合查詢的語句

-----select語句的綜合使用

select * from 系部表 ------ 『*』代表所有內容,也就是查看『系部表』的所有內容。

------輸出部分列

select 欄位,欄位 from

select 系部代號,系主任 from 系部表 ------查看『系部表』中『系部代號』和『系主任』兩個欄位。

------限制返回行數
select top 3* from

select top 2* from 系部表 ------查看『系部表』中前二行的記錄。

------定義欄位名
select as from

select '明星' as 備注,* from 系部表
------加一欄位,內容為『明星』,欄位名為『備注』,查看所有欄位。

-------描述例
select '描述',欄位 from

select *,總價錢=價錢*數量 from 商品表
------查看所有欄位並加一欄位,欄位名為總價錢,值為『價錢*數量』。

----衍生列
select id,姓名=姓+名 from 身份證

select *,總價錢=價錢*數量 from 商品表

------是否顯重復記錄 只能用於一個欄位
select distinct from

select distinct*from 系部表
------不顯示重復行,如果有兩行或多行在每個欄位的值都一樣,則只顯示一行來代替這些行。

-----條件查詢
select from where

select * from 系部表 where 住址 not in ('沈陽')
------顯示所有欄位,條件是『住址』欄位的值非『沈陽』的。把 not 去掉就是查看『住址』是沈陽的了。

----多個條件
select from where and

select * from 學生 where 年齡<25 and 年齡>20 and 住址 in ('沈陽') and 性別='女'
------多條件查看,年齡在23到30之間,住址在『沈陽』,並且性別為『女』。『好友』是表名

-----空值查詢
欄位 is null

select * from 學生 where 學費 is null
------查看所有欄位,學費欄位為『null』的行。就是沒交學費的學生。

------對查詢結果進行排序
order by 欄位 asc升序(desc降序)

select *from 學生 order by 學號 desc ---(desc是降序,asc是升序,升序可以省略)
------查看所有欄位,以『學號』欄位降序排序。

--********************************************************************************
------對數據進行統計
--記錄的個數 count
--值的總和 sum
--平均值 avg
--最大值 max
--最小值 min

--count的用法

select count(*) from 學生

select count(系部代號) from 系部表
-------顯示該列非空值的行數。如果是(*),就顯示行數,不管空不空。如果寫成count(系部代號+系主任),那麼顯示的是兩列都不為空的行數。

--sum的用法

select sum(學費) from 學生

select sum(價錢*數量) 總價錢 from 商品表
------顯示『價錢』欄位的值乘以『數量』欄位的值,所有行的累加和。就是所以商品的總價錢。其中『總價錢』是列名。

--avg的用法

select avg(年齡) from 學生

select avg(價錢) as 平均價 from 商品表
------顯示所有價錢的平均值。as可以省略。

--max的用法

select max(價錢) as 最高價 from 商品表
------顯示最高價是多少。

--****************************************************************
select * from 商品表 where 價錢 in(select max(價錢) from 商品表)
------括弧語句裡面返回的是『最高價』,條件是顯示『價錢』是最高價的行。
--****************************************************************

--min的用法

select min(年齡) from 學生

select min(價錢) as 最高價 from 商品表
------顯示最低價是多少。

------分組
select from group by 列名

select 商品,sum(價錢) as 總價錢 from 商品表 group by 商品
------顯示『商品』和『總價錢』欄位。
------『總價錢』欄位的值是所有同名『商品』值的和。(因為我們用了"sum(價錢)")sum不能對varchar進行運算
------group by 是用來分組的,也就是用『商品』欄位分組。不顯示重復的商品欄位的行。

-----compute 匯總統計
select from compute
select from order by compute 函數 by

select * from 商品表 compute sum(價錢)
------顯示兩個表,把所有行和所有列都顯示出來,第二個表是一個匯總表,只有一列一行,就是價錢的總合,列名為sum.

select 商品,價錢,數量 from 商品表 order by 商品 desc compute sum(價錢) by 商品
------顯示表的數量為"商品"的種類乘2,一種商品一個表,還有一個sum表會對這個商品的價錢求合。

-------having 條件語句
select from group by having 條件

select 商品,sum(價錢*數量) as 總價錢 from 商品表 group by 商品 having sum(價錢*數量)>20000
-----以商品分組,也就只可以查看商品欄位,還有一個聚合函數欄位。having是條件,是對後面的聚合函數的值的條件。

--*****************************************************************************************

create table aa(a1 int,a2 int)
create table bb(b1 int,b2 int)

insert bb values(2,2)
insert bb values(3,1)
insert bb values(7,23)
insert bb values(5,33)
insert bb values(9,53)

------子查詢
----- 單列單值
where 欄位 條件(必須為單值)

select * from table_a where column_a1 < (select avg(column_b1) from table_b) and column_a1 > 100

------顯示『a1』列中的值在『b』表中的『b1』列中也有的行。

----- 單列多值
where 欄位 in

select * from table_a where column_a1 in(select column_b1 from table_b)

where 欄位<all()

select * from table_a where column_a1 < all(select column_b1 from table_b)
------顯示『a1'列中的值小於『b'表中的『b1'列中全部的值的行。
------只有小於b1列中最小值的才會被顯示

where 欄位<any()

select * from table_a where column_a1 <any(select column_b1 from table_b)
------顯示『a1'列中的值小於『b'表中的『b1'列中任何一行的值的行。
------只要小於b1列中最大值的就會被顯示

-----多列多值
where exists(只查詢)

select * from table_a where exists(select * from table_b where column_b1=101)
------exists它返回一個boolean值。真或假。條件為真則輸出where前面的語句。假則反之。
------這個函數多用與if語句處。exists後面括弧中的條件是如果b1列中有445這個值,就輸出a表。

if exists(select * from sysobjects where name='table_b')
select * from table_a
------sysobjects包含當前資料庫中所有的表。
------也就是說當前資料庫中如果有table_b這個表,就為真。

if exists(select * from sysobjects where name='abc')
drop table abc
create table abc(a varchar(10),b varchar(20))

-------模糊查詢
select from where like'條件'
條件 'a_'
'_a'

select * from table_a where column_a1 like '4__'
------查看a1列中三位數,並且是以4開頭的行。

select * from table_a where column_a1 like '__4'
------查看a1列中三位數,並且是以4結尾的行。

select * from table_a where column_a1 like '_4_'
------查看a1列中三位數,並且是以4為中間的行。

'a%'
'%a'
'%a%'

select * from table_a where column_a1 like '4%'
-----查看a1列中以4開頭的行。

select * from table_a where column_a1 like '%4'
-----查看a1列中以4結尾的行。

select * from table_a where column_a1 like '%4%'
-----查看a1列中有4的行。不管4在什麼位置。

'a[a-z]'
'[a-z]a'

select * from abc where a like'a_'
select * from abc where a like'a[0-9]'
select * from table_a where column_4 like '_b_[0-9]'
-----查看第4列中第二個字元是b,第四個字元是0到9的行。

------將查詢結果生成新表select.....into

select * into 王 from 學生 where 姓名 like'王__'

select * from 王

select * into 美女 from 學生 where 性別 = '女' and 年齡 like '2_'
-----查看學生表中的性別欄位為女年齡十位上是2的行,再把查到的結果生成一個表,表名是into後的美女
-----它是生成一個新表的,和別的查看不一樣。

select * from 美女
--停!!!
--停!!!
--停!!!
--停!!!

------合並結果集 select ...union select....

select * from table_a
select * from table_b

select * from table_a union select * from table_b
select * from table_b union select * from table_a
------查看table_a表和table_b表,兩個表的連接。只是查看,並沒有真正連接。要求這兩個表的列數和列的數據類型完全一致。

-----------------連接查詢
------內連接
--select 列名列表 from 表1 inner join 表2 on 條件
--table_a的行數乘以table_b 的行數。
select * from table_a inner join table_b on table_a.column_a1=table_b.column_b1
------內聯接。顯示出『a』表的『a1』欄位和『b』字的『b1』欄位相同的行。

--select 列名列表 from 表1,表2 where 條件

select *from table_a,table_b where table_a.column_a1=table_b.column_b1
------這是內聯接的簡寫版。

------外聯接
----左外聯接
(1)select 列名列表 from 表1 left join 表2 on 條件
--以左為主,右表有則顯示,無則以null補位
select * from table_a left join table_b on table_a.column_a1=table_b.column_b1
------左聯接。把『a』表中的所有行都顯示出來,『b』表中的『b1』欄位和『a』表中的『a1』欄位
------相等的顯示,但『a』表中沒有的,『b』表沒有的則顯示NULL。

(1)select 列名列表 from 表1,表2 where 條件

select * from table_a,table_b where table_a.column_a1*=table_b.column_b1
------左聯接的簡寫版。"*="是左聯接的意思

----右外聯接

(1)select 列名列表 from 表1 right join 表2 on 條件

select * from table_a right join table_b on table_a.column_a1=table_b.column_b1
------以右面表為准,和左聯接一樣。

(1)select 列名列表 from 表1,表2 where 條件

select * from table_a,table_b where table_a.column_a1=*table_b.column_b1
------右聯接的簡寫版。

----全外聯接
select 列名列表 from 表1 full join 表2 on 條件

select * from table_a full join table_b on table_a.column_a1 = table_b.column_b1
------外聯接的全聯接,兩個表的記錄都會顯示,不滿足條件的以null補位.
------a表15行記錄,b表5行記錄,滿足條件的只有1行記錄,查詢結果有19行。

------------cross join
select 列名列表 from 表1 cross join 表2

select * from aa cross join bb

select * from 學生

create table 成績(xid int,語文 int,數學 int,英語 int,化學 int)

insert 成績 values(1,87,89,78,98)
insert 成績 values(2,17,8,78,98)
insert 成績 values(3,27,99,78,98)
insert 成績 values(4,47,49,78,98)
insert 成績 values(5,79,69,78,98)
insert 成績 values(6,77,99,78,98)
insert 成績 values(7,77,29,78,98)

select * from 成績 cross join 學生
------成績表的第一行記錄對應一次學生表的第一行記錄,總行數為兩個錶行數的乘積

------*************************************************
select b.姓名,a.* from 成績 a,學生 b where a.xid *= b.xid
------左連接,"b.姓名"代表學生表的"姓名"欄位
------哪個是左表哪個是右表由"a.xid *= b.xid"來定,"b.姓名,a.*"是代表顯示的位置
------左連接的特性是顯示左邊表的所有行(成績表的所有欄位的所有行),右邊表只顯示滿足條件的行
------*************************************************

-----------自身連接
select 員工主管.員工編號,員工主管.員工姓名,主管表.員工姓名
from 員工主管 left join 員工主管 as 主管表
on 員工主管.主管編號=主管表.員工編號

select * from 學生 a,學生 b where a.xid=b.xid
-------自聯接,但要給自己起個別名。

5. java f循環多次查詢 和where in 查詢 哪個效率好

肯定選擇in查詢。sql操作交給資料庫伺服器。開發需要注意的能少寫sql的盡量少寫sql,把sql放在循環是一種不好的開發行為,每次查詢,java伺服器都會與資料庫伺服器交互,增加網路傳輸。

6. 請問在JAVA中,怎麼用SQL語句實現一個數值或者多個數值的修改

UPDATE userInfo SET age=123, class='2016-05' WHERE name='張三'

使用Statement去執行

7. java 調用sqlservice 存儲過程,帶有where條件

call P_GB_GNZC_1(0,10,'1=1') 放到資料庫執行下

8. 在java中一條sql語句中有多個函數和where條件如何替換其中的欄位為空格

用佔位符,${id},${name},然後用值去替換這些佔位符

9. java程序中的SQL查詢語句,語法不是很熟

上面SQL中錯誤在於:有的欄位前沒有加表名,默認欄位都是From後表中的欄位, 照上面SQL,從表2中查詢表1的欄位C肯定是錯誤的,所以SQL可以改成如下寫法:
String sql="select 欄位a from 表1 where 欄位b in select 表2.欄位c from 表2 where 表2.欄位d='商品A'"