SQL奇偶數快速查詢

2021-10-25 22:14:09 字數 2359 閱讀 9153

目錄

查詢奇數:

查詢偶數:

方法解釋:

問題拓展(字串):

使用正規表示式解決:

正規表示式補充介紹:

今天想查詢身份證號是以奇數結尾和以偶數結尾的問題,隨便看了一下網上的方法,大多都是下面情況:

查詢奇數的方法 &1:1的二進位制是0001,與運算子:1 & 1 = 1, 1 & 0 = 0, 0 & 1 = 0, 0 & 0 = 0;所以可以保證最後一位是奇數。

查詢偶數的方法 字段=(字段》1)<<1:

這是左移和右移運算子,先整除再乘,意思就是先整除2再乘以2,看前後結果是否一樣,一樣的就是偶數。

但是這裡面有個問題,就是這種方法是針對欄位全是數字的情況,如果身份證號碼中間用*號隱藏了一部分,就無法使用。

比如:查詢奇數:

查詢偶數:

查詢奇數:

查詢偶數:

這樣更直接準確。

順便說下正規表示式:

^aa :以 aa 為開頭;

aa$ :以aa結尾;

.      :匹配任何字元;

[abc]:[字元集合],包含中括號裡的字元;

[^abc]:不包含中括號裡的字元;

a|b|c :匹配a或b或c,(中|美)國;

*   :匹配前面的子表示式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等價於;

+  :匹配前面的子表示式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價於 ;

:n 是乙個非負整數。匹配確定的 n 次。例如,'o' 不能匹配 "bob" 中的 'o',但是能匹配 "food" 中的兩個 o;

:m 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。

比如:查詢name欄位中以母音字元開頭或以'ok'字串結尾的所有資料:

select name 

from person_tbl

where name regexp '^[aeiou]|ok$';

SQL語句判斷奇偶數

題目來自 牛客sql篇.題目描述 有乙個員工表employees簡況如下 請你查詢employees表所有emp no為奇數,且last name不為mary的員工資訊,並按照hire date逆序排列,以上例子查詢結果如下 方法一 使用mod mod a,b 在sql中的意思是 a b 的餘數 m...

快速查詢演算法

在日常的演算法中,查詢是乙個經常涉及到的話題,而如何提高查詢的速度,也是很多程式設計師 軟體研究的話題。先看乙個例子。有這樣乙個資料型別s 學生姓名 name 性別 年齡 age 現在假設有這樣乙個需求 檔案a b中分別存放大量s 的記錄,需要將a b中重複的記錄去掉。我們用c 來演示今天的話題 t...

快速查詢素數

題目 時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 現在給你乙個正整數n,要你快速的找出在2.n這些數裡面所有的素數。輸入給出乙個正整數數n n 2000000 但n為0時結束程式。測試資料不超過100組 輸出將2 n範圍內所有的素數輸出。兩個數之間用空格隔開 樣例輸入 5...