⑴ sql sever 2008r2 中如何批量判斷身份證真假
--建議你做成一個自定義函數,然後再調用
--區域編碼的驗證,你得有csounty_sar這個表才行,所以下面的代碼,我去掉了這個
Declare@pspt_idVarchar(18)='52212019880722042X'
Select
case
/*判斷身份證號碼是否為18位*/
whenlen(@pspt_id)<>'18'then'身份證號碼位數不對'
/*判斷身份證號碼前17位是否含除數字外的字元*/
whenISNUMERIC(substring(@pspt_id,1,17))=0then'身份證號碼前17位格式不正確'
/*判斷身份證的年份是否在合理范圍內*/
whensubstring(@pspt_id,7,4)notbetween'1900'and'2014'then'身份證年份錯誤'
/*判斷身份證的月份是否在合理范圍內*/
whensubstring(@pspt_id,11,2)notbetween'01'and'12'then'身份證月份錯誤'
/*判斷身份證日期是否在合理范圍內*/
whenisdate(substring(@pspt_id,7,8))=0then'身份證日期錯誤'
/*判斷身份證號碼的第18位是否符合驗證規則*/
when
(
substring(@pspt_id,1,1)*7+
substring(@pspt_id,2,1)*9+
substring(@pspt_id,3,1)*10+
substring(@pspt_id,4,1)*5+
substring(@pspt_id,5,1)*8+
substring(@pspt_id,6,1)*4+
substring(@pspt_id,7,1)*2+
substring(@pspt_id,8,1)*1+
substring(@pspt_id,9,1)*6+
substring(@pspt_id,10,1)*3+
substring(@pspt_id,11,1)*7+
substring(@pspt_id,12,1)*9+
substring(@pspt_id,13,1)*10+
substring(@pspt_id,14,1)*5+
substring(@pspt_id,15,1)*8+
substring(@pspt_id,16,1)*4+
substring(@pspt_id,17,1)*2
)%11
<>
(
case
whensubstring(@pspt_id,18,1)='1'then'0'
whensubstring(@pspt_id,18,1)='0'then'1'
whensubstring(@pspt_id,18,1)in('X','x')then'2'
whensubstring(@pspt_id,18,1)='9'then'3'
whensubstring(@pspt_id,18,1)='8'then'4'
whensubstring(@pspt_id,18,1)='7'then'5'
whensubstring(@pspt_id,18,1)='6'then'6'
whensubstring(@pspt_id,18,1)='5'then'7'
whensubstring(@pspt_id,18,1)='4'then'8'
whensubstring(@pspt_id,18,1)='3'then'9'
whensubstring(@pspt_id,18,1)='2'then'10'
end
)
then'身份證驗證錯誤'Else'正確'EndAs結果
⑵ 什麼是sql盲注
就是用SQL查詢語句去猜解表名、欄位、數據等。
盲注和普通的SQL注入原理是一樣的,不同在哪裡?
普通注入是會顯示一些錯誤信息在頁面上給攻擊者判斷,也就是說它會有多種情況,從而方便攻擊者。
而盲注則是只有兩種情況,即TRUE和FALSE,這樣說並不是很准確,因為SQL查詢無非就這兩種情況,應該說是盲注的時候你只能得到一個正常的頁面或者是什麼頁面的不存在,甚至你在查詢表的記錄過程也不會有顯示。
SQL盲注是一種SQL注入漏洞,攻擊者可以操縱SQL語句,應用會針對真假條件返回不同的值。但是攻擊者無法檢索查詢結果。
由於SQL盲注漏洞非常耗時且需要向Web服務發送很多請求,因而要想利用該漏洞,就需要採用自動的技術。盲注用工具很難進行注入效果仍然不大理想,所以要重視手工注入技巧。
盲注是不能通過直接顯示的途徑來獲取資料庫數據的方法。在盲注中,攻擊者根據其返回頁面的不同來判斷信息(可能是頁面內容的不同,也可以是響應時間不同)。一般情況下,盲注可分為三類。
Booleanbase
Timebase
Errorbase
⑶ sql語句中如何判斷一個值的真假
這個要看你的資料庫的了.
一般資料庫裡面, 沒有 布爾型的數據類型.
也就是你沒法 直接定義一個列, 數據類型是 Boolean 的。
直接的辦法沒有, 不過間接的是有的。
一般定義一個 數值類型。 1 表示 true 0 表示 false.
對於 SQL Server , 有個數據類型, 叫 bit 整型其值只能是0、1或空值。
對於 MyQL , 也是 BIT
BIT[(M)] 位欄位類型。M表示每個值的位數,范圍為從1到64。如果M被省略,默認為1。
⑷ sql語句如何查詢真假值
最基本的語句:
select 欄位名 from 表名 [where 條件]
[where條件 ]為可選項
⑸ ACCESS資料庫中 欄位類型值"是否"型中的格式,中的(真/假,是/否,開/關)用sql語句如何表示
試試:
Alter TABLE [表名] ADD [新增欄位] BOOLEAN
或者
Alter TABLE [表名] ADD [新增欄位] YESNO
或者
Alter TABLE [表名] ADD [新增欄位] BIT
⑹ 我的access資料庫裡面sql語句在伺服器上不能正常運行
系統已經安裝好SQL Server2000並且打上了SP3補丁;安裝好Office套件裡面的Access;使用一個支持純文本編輯並且帶有行號顯示的編輯器,二、准備
1、程序提供了SQL資料庫格式:有一個MDF文件,或者提供了創建SQL資料庫的SQL腳本文件(後綴名為.sql)。
2、更多的是沒有提供SQL資料庫或腳本文件的,這時,就要自己來做這一切了,這也是我們這個帖子主要解決的問題。
對照原來的access,改寫下面的部分:
(1)sql資料庫表是沒有自動欄位的,因此原來access中的自動欄位被轉換成了普通欄位,需要手工改成標識類型,增量為1。
(2)所有的時間欄位,如果定義了默認值,那麼原來肯定是now(),需要改成getdate()
(3)原來欄位的默認值一般都不會自動引入,需要對照原表的欄位手工添加。
(4)由於資料庫的不同,access和sql的欄位類型很多轉換後就變化了,比如原來的《是否》欄位會被轉換成bit或者int,備注欄位被轉換成longtext,text欄位轉換成varchar等等,一般來說不會影響程序運行,如果有問題,我們在下面的程序改寫部分再說。
(5)如果你要用一個For SQL的程序,裡面用到了存儲過程,那麼你應該有這個程序本身建立SQL資料庫的方法:有其本身的SQL資料庫文件,或者sql腳本;如果沒有的話,採用導入access資料庫的方式是無法建立存儲過程的,這樣你最好放棄這個For SQL的程序版本,使用同樣版本的For Access的程序,導入access資料庫,然後用下面的改寫方法自己改成SQL版本的程序。
三、連接字元串的改寫
可參考動網的這段,分別是針對access和SQL的
Dim ConnStr
If IsSqlDataBase = 1 Then
'sql資料庫連接參數:資料庫名、用戶密碼、用戶名、連接名(本地用local,外地用IP)
Dim SqlDatabaseName,SqlPassword,SqlUsername,SqlLocalName
SqlDatabaseName = "dvbbs7"
SqlPassword = ""
SqlUsername = "dvbbs"
SqlLocalName = "(local)"
ConnStr = "Provider = Sqloledb; User ID = " & SqlUsername & "; Password = " & SqlPassword & "; Initial Catalog = " & SqlDatabaseName & "; Data Source = " & SqlLocalName & ";"
Els
'sql資料庫連接參數:資料庫名、用戶密碼、用戶名、連接名(本地用local,外地用IP)
Dim SqlDatabaseName,SqlPassword,SqlUsername,SqlLocalName
SqlDatabaseName = "dvbbs7"
SqlPassword = ""
SqlUsername = "dvbbs"
SqlLocalName = "(local)"
ConnStr = "Provider = Sqloledb; User ID = " & SqlUsername & "; Password = " & SqlPassword & "; Initial Catalog = " & SqlDatabaseName & "; Data Source = " & SqlLocalName & ";"
On Error Resume Next
Set conn = Server.CreateObject("ADODB.Connection")
conn.open ConnStr也可以簡潔一些,寫成這樣:
Set conn = Server.CreateObject("ADODB.Connection")
conn.open "Provider = Sqloledb; User ID = sa; Password = 1234567; Initial Catalog = dvbbs7; Data Source = (local);"
裡面的資料庫名稱、數據源、用戶、密碼根據自己的實際情況改寫一下。
四、程序的改寫 1、如果你幸運,拿到的是For SQL的程序,那麼如果上面的資料庫建立過程沒有遇到麻煩,程序基本上就可以運行了,出錯的話,只是程序本身的bug,如何修改不是這個帖子討論的內容,就不贅述了。
2、大多數情況,程序本身是For Access的,與For SQL的程序差別主要是程序中使用到的SQL查詢語句。注意,SQL查詢語句是資料庫應用不可缺少的部分,不管是For SQL還是For Aceess的程序使用的語法大體差不多,但是有一些微妙的差別,正是這些差別,造成了程序的不通用,也是我們需要修改的主要內容。這樣一般要修改的部分如下:
(1)時間函數的問題:SQL資料庫的時間函數與access不同,最常見的是取現在時間的函數,access是now(),SQL是getdate()。因此凡是在where子句中使用了now()的地方都要改成getdate();注意,now()函數在asp程序本身也要使用,凡是不在資料庫查詢或執行語句中使用的now()函數千萬不要改。
(2)時間比較函數:datediff('d','時間1',『時間2』)這是access查詢用的格式,SQl中這些引號都要去掉,同時時間格式的前後可能加上了#,這也要去掉。同樣這也是指在sql語句中的,在asp語句中的要保持原樣。
(3)空值的表示:在access中,判斷空值一般用是否=""來表示,但是這在SQL中往往出錯,如果遇到出錯的問題或者程序運行不正常,可以改成如這樣判斷:where (name is null)
(4)真假值判斷:access中可以用=true、=false來判斷,但是在SQL中就會出錯,因此在SQL查詢或執行語句中這類判斷要分別改成=1、=0。注意一點:有些程序雖然寫成=「true」,但是由於有引號,所以這個欄位是字元類型的,你不能改成=1,保持原樣即可.
程序的調試 前面推薦使用帶有行號的編輯器,是因為上述的改寫不大可能是直接搜索程序源碼來做,很難找全。
我採取的方式一般這樣:資料庫改寫完成,直接調試程序,出錯後,看看出錯的提示,找到相應文件的代碼行,但是根源往往不是那行,比如出錯的語句是:conn.execute(sql),但是這句本身是沒有錯的,錯誤原因是裡面的這個sql字元串,那就向上看這個sql字元串是如何生成的,按照上面所說的程序修改辦法修改。
所有的默認值都丟失了。主要是數字類型和日期類型。
所有now(),time(),date()要改成getdate()。
所有datediff('d', time1, time2)要改成datediff(day, time1, time2)
有可能一些true/false類型不能使用,要變為1/0。
備注類型要通過cast(column as varchar)來使用。
CursorType要改成1,也就是打開資料庫時要給出第一個數字參數為1,否則記錄可能顯示不完整。
isnull(rowname)要改成rowname = null
ACCESS的資料庫中的自動編號類型在轉化時,sql server並沒有將它設為自動編號型,我們需在SQL創建語句中加上identity,表示自動編號!
轉化時,跟日期有關的欄位,SQL SERVER默認為smalldatetime型,我們最好將它變為datetime型,因為datetime型的范圍比smalldatetime型大。有時用smalldatetime型時,轉化失敗,而用datetime型時,轉化成功。
對此兩種資料庫進行操作的sql語句不全相同,例如:在對ACCESS資料庫進行刪除紀錄時用:"delete * from user where id=10",而對SQL SERVER資料庫進行刪除是用:"delete user where id=10".
日期函數不相同,在對ACCESS資料庫處理中,可用date()、time()等函數,但對SQL SERVER資料庫處理中,只能用datediff,dateadd等函數,而不能用date()、time()等函數。
在對ACCESS資料庫處理中,sql語句中直接可以用一些VB的函數,像cstr()函數,而對SQL SERVER資料庫處理中,卻不能用。
下表比較了MicrosoftAccess資料庫(MicrosoftAccess資料庫:數據和對象(如表、查詢或窗體)組成的集合,與特定的主題或用途有關。MicrosoftJet資料庫引擎用於管理數據。)和MicrosoftAccess項目(MicrosoftAccess項目:與MicrosoftSQLServer資料庫連接且用於創建客戶/伺服器應用程序的Access文件。項目文件中不包含任何數據或基於數據定義的對象(如表或視圖)。)的數據類型(數據類型:決定欄位可擁有的數據類型的欄位特徵。數據類型包括Boolean、Integer、Long、Currency、Single、Double、Date、String和Variant(默認))。
MicrosoftAccess數據類型SQLServer數據類型
是/否(「是/否」數據類型:一種欄位數據類型,用於只有兩種可能值(如是或否、True或False)的欄位。不允許有Null值。)bit(bit數據類型:在Access項目中,一種存儲值為1或0的數據類型。接受1和0以外的整數值,但總是將其解釋為1。)
數字(「數字」數據類型:MicrosoftAccess資料庫中的一種欄位數據類型,用於將在數學運算中使用的數值數據。但是,若要顯示或計算貨幣值,則應使用「貨幣」數據類型。)(位元組)tinyint(tinyint數據類型:Access項目中的一種佔一個位元組(8位)的數據類型,用於存儲從0到255范圍內的整數。)
數字(整型)smallint(smallint數據類型:Access項目中的一種2位元組(16位)數據類型,存儲位於-2^15(-32,768)與2^15-1(32,767)之間的數字。)
數字(長整型)int(int數據類型:Access項目中的一種4位元組(32位)數據類型,存儲位於-2^31(-2,147,483,648)與2^31-1(2,147,483,647)之間的數字。)
數字(單精度浮點型)real(real數據類型:在Access項目中,一種近似的數值數據類型,精度為7位,正值取值范圍大致從1.18E-38到3.40E+38,負值取值范圍大致從-1.18E-38到-3.40E+38,也可以取0。)
(無等價的數據類型)bigint(bigint數據類型:Access項目中的一種8位元組(64位)數據類型,存儲位於-2^63(-9,223,372,036,854,775,808)與2^63-1(9,223,372,036,854,775,807)之間的數字。)
數字(雙精度浮點型)float(float數據類型:在Access項目中,一種近似的數值數據類型,精度為15位。它所存儲的正值范圍大致是從2.23E-308到1.79E+308,負值范圍大致是從-2.23E-308到-1.79E+308,也可以為0。)
貨幣(「貨幣」數據類型:MicrosoftAccess資料庫中的一種數據類型,用於與貨幣有關的計算或其精確度極其重要的定點計算。)money(money數據類型:在Access項目中,用於存儲貨幣值的數據類型,取值范圍從-922,337,203,685,477.5707到922,337,203,685,477.5807,精確度為萬分之一個貨幣單位。)
smallmoney(smallmoney數據類型:Access項目中的一種存儲貨幣值的數據類型,取值范圍從-214,748.3648到214,748.3647,精確度為萬分之一個貨幣單位。當顯示smallmoney值時,會將它們四捨五入為兩個小數位。)
小數/數值(decimal數據類型(Access資料庫):精確的數值數據類型,用於存儲-10^38-1到10^38-1的值。可以指定數值范圍(最大總位數)和精度(小數點右邊的最大位數)。)decimal(decimal數據類型(Access項目):精確的數值數據類型,用於存儲-10^38-1到10^38-1的值。可以指定數值范圍(最大總位數)和精度(小數點右邊的最大位數)。)
numeric(numeric數據類型:在Access項目中,一種精確的數值數據類型,取值從-10^38-1到10^38-1。可以指定數值范圍(最大總位數)和精度(小數點右邊的最大位數)。)
日期/時間(「日期/時間」數據類型:Access資料庫的一種數據類型,用來存放日期和時間信息。)datetime(datetime數據類型:在Access項目中,日期和時間的數據類型,范圍從1753年1月1日到9999年12月31日,精確度為三百分之一秒,即3.33毫秒。)
smalldatetime(smalldatetime數據類型:Access項目中的一種日期和時間數據類型,精度不如datetime時間數據類型。數據取值范圍從1900年1月1日到2079年6月6日,精確度為一分鍾。)
自動編號(「自動編號」數據類型:MicrosoftAccess資料庫中的一種欄位數據類型,當向表中添加一條新記錄時,這種數據類型會自動為每條記錄存儲一個唯一的編號。可以產生三種編號:順序號、隨機號和同步復制ID。)(遞增)int(int數據類型:Access項目中的一種4位元組(32位)數據類型,存儲位於-2^31(-2,147,483,648)與2^31-1(2,147,483,647)之間的數字。)(定義了Identity屬性)
文本(「文本」數據類型:MicrosoftAccess資料庫中的一種欄位數據類型。「文本」數據類型最多可以包含255個字元,或者是由FieldSize屬性指定的一個小一些的字元數。)(n)varchar(n)(varchar(n)數據類型:Access項目中的一種可變長度的數據類型,最大長度為8,000個ANSI字元。)
nvarchar(n)(nvarchar(n)數據類型:在Access項目中,一種可變長度的數據類型,最多可含4,000個Unicode字元。Unicode字元每字元占兩個位元組,而且支持所有國際字元。)
備注(「備注」數據類型:在MicrosoftAccess資料庫中的一種欄位數據類型。「備注」欄位最多可以包含65,535個字元。)text(text數據類型:Access項目中的一種長度可變的數據類型,最多可存儲2^31-1(2,147,483,647)個字元;默認長度為16。)
OLE對象(「OLE對象」數據類型:欄位的數據類型之一,用於在其他應用程序中創建的、可鏈接或嵌入(插入)到Access資料庫中的對象。)image(image數據類型:在Access項目中,一種長度可變的數據類型,最多可存儲2^31-1(2,147,483,647)位元組的二進制數據。image數據類型用來存儲BLOB(二進制大對象),如圖片、文檔、聲音和已編譯代碼。)
同步復制ID(又名全局唯一標識符(GUID:在Access資料庫中,一種用於建立同步復制唯一標識符的16位元組欄位。GUID用於標識副本、副本集、表、記錄和其他對象。在Access資料庫中,GUID是指同步復制ID。)(GUID))uniqueidentifier(uniqueidentifier數據類型:在Access項目中,16位元組的全局唯一標識符(GUID)。)(僅適於SQLServer7.0或更高版本)
超鏈接(「超鏈接」數據類型:存儲超鏈接地址的Access資料庫欄位的數據類型。地址最多可以包含四部分,用以下語法格式編寫:displaytext#address#subaddress#。)char(char數據類型:在Access項目中,一種固定長度的數據類型,最多可含8,000個ANSI字元。),
nchar(nchar數據類型:在Access項目中,一種固定長度的數據類型,最多可含4,000個Unicode字元。Unicode字元每字元占兩個位元組,而且支持所有國際字元。),varchar,nvarchar(Hyperlink屬性設為Yes)
(無等價的數據類型)varbinary(varbinary數據類型:Access項目中的一種可變長度的數據類型,最多可存儲8,000位元組的二進制數據。)
(無等價的數據類型)smallint(smallint數據類型:Access項目中的一種2位元組(16位)數據類型,存儲位於-2^15(-32,768)與2^15-1(32,767)之間的數字。)
(無等價的數據類型)timestamp(timestamp數據類型:在Access項目中,一種每插入或更新一行就會自動更新的數據類型。timestamp列中的值不是datetime數據,而是binary(8)或varbinary(8),標明了數據修改的順序。)
(無等價的數據類型)charnchar
(無等價的數據類型)sql_variant(sql_variant數據類型:Access項目中的一種數據類型,存儲除text、ntext、image、timestamp和sql_variant類型以外的多種數據類型的值。在列、參數、變數或用戶定義函數的返回值中使用。)
(無等價的數據類型)用戶定義(用戶定義的數據類型:在MicrosoftSQLServer資料庫中,允許某列包含的數據的類型定義,由用戶利用現有的系統數據類型定義。規則和默認值僅可以綁定到用戶定義的數據類型。)
注釋在Access項目或SQLServer資料庫中,前綴「n」代表「國家/地區」,意思是這個數據類型是啟用Unicode的。在Access資料庫中,全部文本列在默認情況下都是啟用Unicode的。
ACCESS轉SQL需要注意的問題
2006-2-13 16:01:20
很多朋友想用SQL2000資料庫的編程方法,但是卻又苦於自己是學ACCESS的,對SQL只是一點點的了解而已,這里我給大家提供以下參考---將ACCESS轉化成SQL2000的方法和注意事項
一,首先,我說的是在ACCESS2000,SQL2000之間轉換,其他的我也還沒有嘗試過,希望大家多多試驗,肯定是有辦法的;
二,轉換的方法
1,打開」控制面板「下」管理工具「中的」資料庫源「;
2,按」添加「添加一個新的數據源,在選擇欄里選」DriverdomicrosoftAccess
(*.mdb)」,完成後將出現一個框,
在」資料庫源「裡面輸入你想寫的名稱,我取名叫「ABC」,說明不需要填,接著,按下面的選擇,尋找你的資料庫地址和選中(注意,請先備份自己的ACCESS資料庫),然後確定。
數據源在這里建好了,剩下轉換了。
3,打開SQL2000企業管理器,進入資料庫,新建一個空的資料庫「ABC」;
4,選擇新建立的資料庫,按滑鼠右鍵,選擇「所有任務」下「導入數據」,按「下一步」繼續;
5,在資料庫源下拉但中選擇」DriverdomicrosoftAccess(*.mdb)「,在」用戶/系統DSN「中,選種你剛才添加的」ABC「,按」下一步「;
6,「目的」不需要修改,選擇伺服器(一般下為自己的本機"local",也可以選擇伺服器地址或者區域網地址,確定你的許可權是否可以操作,),"使用WINDOWS身份驗證"指用自己的系統管理員身份操作,"使用SQL身份操作驗證"可以用於網站的操作,推薦用後者;
7,選上"使用SQL身份操作驗證"後,填寫你的用戶名和密碼,我自己選擇的是系統默認號碼"sa","****",資料庫選擇剛新建的"ABC",按"下一步";
8,這一步的兩個單項選擇,"從數據源復製表和視圖"與"用一條查詢指令指定要傳輸的數據",選擇前者,按"下一步"繼續;
9,這里將出現你自己ACCESS資料庫的表,按"全選"後,下一步;
10,"DTS導入/導出向導",看"立即運行"被選中按"下一步",
11,按"完成"繼續;
12,這個步驟你將看到你的數據被導入SQL2000裡面,當出現"已經成功把XXX個表導入到資料庫"的字樣,而且所有的表前面都有綠色的勾,就表示成功導入所有數據,如果中途出現問題或者表前面有紅色的*的話,說明該表沒有成功導入,這時就要回去查看自己的操作是否正確了.
三,數據修改
1,由於SQL2000裡面沒有"自動編號",所以你的以"自動編號"設置的欄位都會變成非空的欄位,這就必須手工修改這些欄位,並把他的"標示"選擇"是",種子為"1",增量為"1",
2,另外,ACCESS2000轉換成SQL2000後,原來屬性為"是/否"的欄位將被轉換成非空的"bit",這時候你必須修改成自己想要的屬性了;
3,另外,大家要注意對時間函數的把握.ACCESS與SQL是有很多不同的.
四、相關的欄位問題
1.ACCESS的資料庫中的自動編號類型在轉化時,sqlserver並沒有將它設為自動編號型,我們需在SQL創建語句中加上identity,表示自動編號!
2.轉化時,跟日期有關的欄位,SQLSERVER默認為smalldatetime型,我們最好將它變為datetime型,因為datetime型的范圍比smalldatetime型大。我遇見這種情況,用smalldatetime型時,轉化失敗,而用datetime型時,轉化成功。
3.對此兩種資料庫進行操作的sql語句不全相同,例如:在對ACCESS資料庫進行刪除紀錄時用:"delete*fromuserwhereid=10",而對SQLSERVER資料庫進行刪除是用:"deleteuserwhereid=10".
4.日期函數不相同,在對ACCESS資料庫處理中,可用date()、time()等函數,但對SQLSERVER資料庫處理中,只能用datediff,dateadd等函數,而不能用date()、time()等函數。
5.在對ACCESS資料庫處理中,sql語句中直接可以用一些VB的函數,像cstr()函數,而對SQLSERVER資料庫處理中,卻不能用。
⑺ SQL中檢查身份證是否正確
select 欄位1, 欄位2
from t
where 欄位=『身份證號』;
有就是真的,沒有就是假的啊!只不過具體問題具體分析
⑻ SQL中EXISTS怎麼用
EXISTS在SQL中的作用是:檢驗查詢是否返回數據。
select a.* from tb a where exists(select 1 from tb where name =a.name)返回真假,當 where 後面的條件成立,則列出數據,否則為空。
exists強調的是是否返回結果集,不要求知道返回什麼。比如:select name from student where sex = 'm' and mark exists(select 1 from grade where ...)
只要exists引導的子句有結果集返回,那麼exists這個條件就算成立了,大家注意返回的欄位始終為1
如果改成「select 2 from grade where ...」,那麼返回的欄位就是2,這個數字沒有意義。所以exists子句不在乎返回什麼,而是在乎是不是有結果集返回。
(8)sql真假判斷擴展閱讀:
Exists 方法描述如果在 Dictionary對象中指定的關鍵字存在,返回True,若不存在,返回False。
語法object.Exists(key)Exists 方法語法有如下幾部分:部分描述Object必需的。始終是一個 Dictionary對象的名字。Key必需的,在 Dictionary對象中搜索的Key值。
exist相當於存在量詞:表示集合存在,也就是集合不為空只作用一個集合.
例如 exist P表示P不空時為真; not exist P表示p為空時為真in表示一個標量和一元關系的關系。
例如:s in P表示當s與P中的某個值相等時為真; s not in P 表示s與P中的每一個值都不相等時為真。
exits與not exits
exists(sql 返回結果集為真)
not exists(sql 不返回結果集為真)
如果not exists子查詢只有自己本身的查詢條件,這樣只要子查詢中有數據返回,就證明是false,結果在整體執行就無返回值;一旦跟外面的查詢關聯上,就能准確查出數據。
⑼ sql頭阻塞程序是1代表什麼意思
就是判斷一下真假 因為1永遠=1,所以肯定為真 不過這纖啟寬里用不用1=1沒什麼作用,前邊就能確定結果了 你可以旁拍換成1=0,這樣就恆為假,所以毀亮當後邊是1=0時你選不出來任何數據
⑽ 蘋果6sqls怎麼查真假
1、如果想要辨別手機的真偽,可以打開手機的【設置】--【通用】--【關於本機】,看到【序列號】這一列,查看到序列號後,記下來;
2、電腦訪問蘋果尺宏官網,點擊技術支持,再點擊保修服務與期限,輸入序列號後,將保修到期日期往前推弊汪一年,看與激活日期是否吻合,如果吻合,即是真機。
3、也可以電腦端下載一個XY蘋果助手,連接手機,XY蘋果助陵卜冊手會自動顯示iphone的設備信息,而如果是仿品手機,在XY蘋果助手是無法識別的。