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

sql一串數字通配符

發布時間: 2022-10-29 05:03:45

1. sql語句中通配符有幾種

SQL語句中通配符有四種,分別是百分號%、下劃線_、方括弧[ ]、方括弧[^](或[!])。

百分號%:替代0個或多個字元

下劃線_:僅替代一個字元

方括弧[ ]:字元列中的任何單一字元,使用方法:[charlist]

方括弧[^]或者方括弧[!]不在字元列中的任何單一字元,使用方法:[^charlist]或[!charlist]。

(1)sql一串數字通配符擴展閱讀:

sql通配符用來執行模糊搜索指令的語句功能。在搜索資料庫中的數據時,SQL 通配符可以替代一個或多個字元。

SQL 通配符必須與 LIKE 運算符一起使用。如在數據中搜索以大寫「A」字母開頭的字元類型數據,可以使用like "A%"。

不過,MySQL、SQLite只支持%和_通配符,不支持[^charlist]或[!charlist]通配符(MS Access 支持,微軟 office 對通配符一直支持良好,但微軟有時候的通配符不支持%,而是*,具體看對應軟體說明)。

MySQL 和 SQLite 會把like '[xxx]yyy'的中括弧當成普通字元,而不是通配符。

參考資料:網路——SQL 通配符

2. sql 通配符的用法

SELECT <列名列表> FROM<表名>WHERE <列名> LIKE{套式}
--功能:從指定表中選擇符合套式中的條件的所有項 註:LIKE 通常情況下與通配符分不開,一下是對通配符的介紹:
--1)* 代表多個字元
--例如:a*a 可代表 aba,aBa,ahfklsdha,等
--2)% 代表多個字元
--例如:a%a 可代表aba,aBa,aafdaka,等
--3)?代表單字元
--例如:a?a 可代表 aba,aca,aCa,等
--4)# 代表單數字
--例如:a#a 可代表 a1a,a5a,a0a,等
--5)[charlist] 字元列中的任何單一字元
--例如:[A-Z] 代表a 到 z的26個字母中的任意一個字元 [ALN]代表A或L或N
--6) [!charlist] 或 [^charlist] 代表不再范圍之內的任意一個字元
--例如:[!a-z] 代表不再a 到z 范圍之內的任意一個字元

select Id,city from Domestic where city like ('%,')
--city結尾為,號在表Domestic中的Id,city欄位
select Id,city from Domestic where city not like ('% %')
--city中沒有空格在表Domestic中的Id,city欄位
SELECT * FROM Persons WHERE City LIKE '[!ALN]%'
--Persons 表中選取City欄位不以 "A" 或 "L" 或 "N" 開頭的
SELECT * FROM Persons WHERE City LIKE '[ALN]%'
--Persons 表中選取City欄位以 "A" 或 "L" 或 "N" 開頭的

3. SQL 查詢一列中,數字字元串中,最後一個數字欄位的簡單語句

結論:作為補充,我們使用MySQL字元串操作函數進行篩選。

like

只要是字元串操作函數,可達到篩選目的的一般均可使用。

但是查詢性能需視情況而定。


以上。

4. 請教sql通配符的問題,請高手幫忙

確定特定字元串是否與指定模式相匹配。模式可以包含常規字元和通配符。模式匹配過程中,常規字元必須與字元串中指定的字元完全匹配。但是,通配符可以與字元串的任意部分相匹配。與使用 = 和 != 字元串比較運算符相比,使用通配符可使 LIKE 運算符更加靈活。如果任何一個參數都不屬於字元串數據類型,則 SQL Server 2005 Database Engine 會將其轉換為字元串數據類型(如果可能)。

Transact-SQL 語法約定

語法

match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]

備注
如果使用 LIKE 執行字元串比較,則模式字元串中的所有字元都有意義。這包括前導或尾隨空格。如果查詢中的比較要返回包含 "abc "(abc 後有一個空格)的所有行,則不會返回包含 "abc"(abc 後沒有空格)的列所在行。但是可以忽略模式所要匹配的表達式中的尾隨空格。如果查詢中的比較要返回包含 "abc"(abc 後沒有空格)的所有行,則返回以 "abc" 開始並且具有零個或多個尾隨空格的所有行。

由於數據存儲方式的原因,使用包含 char 和 varchar 數據的模式的字元串比較可能無法通過 LIKE 比較。您應當了解每種數據類型的存儲方式以及導致 LIKE 比較失敗的原因。以下示例將本地 char 變數傳遞給存儲過程,然後使用模式匹配來查找其姓氏以一組指定的字元開始的所有雇員。

USE AdventureWorks;
GO
CREATE PROCEDURE FindEmployee @EmpLName char(20)
AS
SELECT @EmpLName = RTRIM(@EmpLName) + '%';
SELECT c.FirstName, c.LastName, a.City
FROM Person.Contact c JOIN Person.Address a ON c.ContactID = a.AddressID
WHERE c.LastName LIKE @EmpLName;
GO
EXEC FindEmployee @EmpLName = 'Barb';
GO

當名字中包含的字元數小於 20 時,char 變數 (@EmpLName) 將包含尾隨空格,這導致 FindEmployee 過程中沒有行返回。由於 LastName 列為 varchar 類型,因此沒有尾隨空格。因為尾隨空格是有意義的,所以此過程失敗。

但以下示例會成功,因為沒有向 varchar 變數中添加尾隨空格。

USE AdventureWorks;
GO
CREATE PROCEDURE FindEmployee @EmpLName varchar(20)
AS
SELECT @EmpLName = RTRIM(@EmpLName) + '%';
SELECT c.FirstName, c.LastName, a.City
FROM Person.Contact c JOIN Person.Address a ON c.ContactID = a.AddressID
WHERE c.LastName LIKE @EmpLName;
GO
EXEC FindEmployee @EmpLName = 'Barb';

下面是結果集:

FirstName LastName City
---------- ----------------------------------------
Angela Barbariol Snohomish
David Barber Snohomish

(2 row(s) affected)

使用 LIKE 的模式匹配
LIKE 支持 ASCII 模式匹配和 Unicode 模式匹配。如果所有參數(match_expression、pattern 和 escape_character,如果存在)均為 ASCII 字元數據類型,則執行 ASCII 模式匹配。如果任何一個參數為 Unicode 數據類型,則所有參數都將轉換為 Unicode,並執行 Unicode 模式匹配。當 Unicode 數據(nchar 或 nvarchar 數據類型)與 LIKE 一起使用時,尾隨空格有意義;但對非 Unicode 數據,尾隨空格則沒有意義。Unicode LIKE 與 SQL-92 標准兼容。ASCII LIKE 與 SQL Server 的早期版本兼容。

下面的一系列示例顯示 ASCII LIKE 模式匹配與 Unicode LIKE 模式匹配所返回的行之間的差異。

-- ASCII pattern matching with char column
CREATE TABLE t (col1 char(30));
INSERT INTO t VALUES ('Robert King');
SELECT *
FROM t
WHERE col1 LIKE '% King' -- returns 1 row

-- Unicode pattern matching with nchar column
CREATE TABLE t (col1 nchar(30));
INSERT INTO t VALUES ('Robert King');
SELECT *
FROM t
WHERE col1 LIKE '% King' -- no rows returned

-- Unicode pattern matching with nchar column and RTRIM
CREATE TABLE t (col1 nchar (30));
INSERT INTO t VALUES ('Robert King');
SELECT *
FROM t
WHERE RTRIM(col1) LIKE '% King' -- returns 1 row

注意:
LIKE 比較受排序規則影響。有關詳細信息,請參閱 COLLATE (Transact-SQL)。

使用 % 通配符
如果指定 LIKE '5%' 符號,則資料庫引擎 將搜索後跟零個或多個任意字元的數字 5。

例如,以下查詢顯示 AdventureWorks 資料庫中的所有動態管理視圖,因為它們全部以字母 dm 開始。

USE AdventureWorks;
GO
SELECT Name
FROM sys.system_views
WHERE Name LIKE 'dm%';
GO

若要查看所有非動態管理視圖的對象,請使用 NOT LIKE 'dm%'。如果共有 32 個對象且 LIKE 找到 13 個與模式匹配的名稱,則 NOT LIKE 將找到 19 個與 LIKE 模式不匹配的對象。

使用 LIKE '[^d][^m]%' 之類的模式不一定每次找到的名稱都相同。可能僅找到 14 名稱(而不是 19 個),除了動態管理視圖名稱外,所有以 d 開始或第二個字母為 m 的名稱也都將從結果中消除。這是因為用反向通配符匹配字元串是分步驟進行計算的,一次一個通配符。如果在計算過程中任一環節匹配失敗,那麼就會將其消除。

將通配符作為文字使用
可以將通配符模式匹配字元作為文字字元使用。若要將通配符作為文字字元使用,請將通配符放在方括弧中。下表顯示了幾個使用 LIKE 關鍵字和 [ ] 通配符的示例。

符號 含義
LIKE '5[%]'
5%

LIKE '[_]n'
_n

LIKE '[a-cdf]'
a、b、c、d 或 f

LIKE '[-acdf]'
-、a、c、d 或 f

LIKE '[ [ ]'
[

LIKE ']'
]

LIKE 'abc[_]d%'
abc_d 和 abc_de

LIKE 'abc[def]'
abcd、abce 和 abcf

使用 ESCAPE 子句的模式匹配
可搜索包含一個或多個特殊通配符的字元串。例如,customers 資料庫中的 discounts 表可能存儲含百分號 (%) 的折扣值。若要搜索作為字元而不是通配符的百分號,必須提供 ESCAPE 關鍵字和轉義符。例如,一個樣本資料庫包含名為 comment 的列,該列含文本 30%。若要搜索在 comment 列中的任何位置包含字元串 30% 的任何行,請指定 WHERE comment LIKE '%30!%%' ESCAPE '!' 之類的 WHERE 子句。如果未指定 ESCAPE 和轉義符,則資料庫引擎 將返回包含字元串 30 的所有行。

如果 LIKE 模式中的轉義符後面沒有字元,則該模式無效並且 LIKE 返回 FALSE。如果轉義符後面的字元不是通配符,則將放棄轉義符並將該轉義符後面的字元作為該模式中的常規字元處理。這包括百分號 (%)、下劃線 (_) 和左括弧 ([) 通配符(如果它們包含在雙括弧 ([ ]) 中)。另外,在雙括弧字元 ([]) 內,可以使用轉義符並將插入符號 (^)、連字元 () 和右括弧 (]) 轉義。

參數
match_expression

任何有效的字元數據類型的表達式。

pattern

要在 match_expression 中搜索並且可以包括下列有效通配符的特定字元串。pattern 的最大長度可達 8,000 位元組。

通配符 說明 示例
%
包含零個或多個字元的任意字元串。
WHERE title LIKE '%computer%' 將查找在書名中任意位置包含單詞 "computer" 的所有書名。

_(下劃線)
任何單個字元。
WHERE au_fname LIKE '_ean' 將查找以 ean 結尾的所有 4 個字母的名字(Dean、Sean 等)。

[ ]
指定范圍 ([a-f]) 或集合 ([abcdef]) 中的任何單個字元。
WHERE au_lname LIKE '[C-P]arsen' 將查找以 arsen 結尾並且以介於 C 與 P 之間的任何單個字元開始的作者姓氏,例如 Carsen、Larsen、Karsen 等。

[^]
不屬於指定范圍 ([a-f]) 或集合 ([abcdef]) 的任何單個字元。
WHERE au_lname LIKE 'de[^l]%' 將查找以 de 開始並且其後的字母不為 l 的所有作者的姓氏。

escape_character

放在通配符之前用於指示通配符應當解釋為常規字元而不是通配符的字元。escape_character 是字元表達式,無默認值,並且計算結果必須僅為一個字元。

結果類型
Boolean

結果值
如果 match_expression 與指定的 pattern 相匹配,則 LIKE 返回 TRUE。

示例
A. 使用帶 % 通配符的 LIKE
以下示例在 Contact 表中查找區號不是 415 的所有電話號碼。

USE AdventureWorks;
GO
SELECT FirstName, LastName, Phone
FROM Person.Contact
WHERE phone LIKE '415%'
ORDER by LastName;
GO

下面是結果集:

FirstName LastName phone
----------------- ---------------- ------------
Ruben Alonso 415-555-0124
Shelby Cook 415-555-0121
Karen Hu 415-555-0114
John Long 415-555-0147
David Long 415-555-0123
Gilbert Ma 415-555-0138
Meredith Moreno 415-555-0131
Alexandra Nelson 415-555-0174
Taylor Patterson 415-555-0170
Gabrielle Russell 415-555-0197
Dalton Simmons 415-555-0115

(11 row(s) affected)

B. 使用帶 % 通配符的 NOT LIKE
以下示例在 Contact 表中查找區號不是 415 的所有電話號碼。

USE AdventureWorks;
GO
SELECT FirstName, LastName, Phone
FROM Person.Contact
WHERE Phone NOT LIKE '415%' AND FirstName = 'Gail'
ORDER BY LastName;
GO

下面是結果集:

FirstName LastName Phone
--------- ---------- -------------------
Gail Alexander 1 (11) 500 555-0120
Gail Butler 1 (11) 500 555-0191
Gail Erickson 834-555-0132
Gail Erickson 849-555-0139
Gail Griffin 450-555-0171
Gail Moore 155-555-0169
Gail Russell 334-555-0170
Gail Westover 305-555-0100

(8 row(s) affected)

C. 使用 ESCAPE 子句
以下示例使用 ESCAPE 子句和轉義符在 mytbl2 表的列 c1 中查找精確字元串 10-15%。

USE tempdb;
GO
IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'mytbl2')
DROP TABLE mytbl2;
GO
USE tempdb;
GO
CREATE TABLE mytbl2
(
c1 sysname
);
GO
INSERT mytbl2 VALUES ('Discount is 10-15% off');
INSERT mytbl2 VALUES ('Discount is .10-.15 off');
GO
SELECT c1
FROM mytbl2
WHERE c1 LIKE '%10-15!% off%' ESCAPE '!';
GO

D. 使用 [ ] 通配符
以下示例查找名字為 Cheryl 或 Sheryl 的 Contacts。

USE AdventureWorks;
GO
SELECT ContactID, FirstName, LastName
FROM Person.Contact
WHERE FirstName LIKE '[CS]heryl';
GO

以下示例查找姓氏為 Zheng 或 Zhang 的 Contacts 行。

USE AdventureWorks;
GO
SELECT LastName, FirstName, Phone
FROM Person.Contact
WHERE LastName LIKE 'Zh[ae]ng'
ORDER BY LastName ASC, FirstName ASC;
GO

以上是SQLSERVER中的幫助。不知道是不是你想要的。

5. SQL里通配符的使用

在VFP6.0中,通配符有兩種,一種是「*」表示任何一串字元,還有一種是「?」,表示任何一個字元。
在SQL查詢語句中有時用到模糊查詢。格式為:<屬性名> like <字元串常量>
屬性名必須為字元型。例如:查詢某班所有姓張的同學
select * from student where 姓名 like '張%'
這兒必須用「like」,所以一樓是錯的
%表示任意長度的字元
_表示一個字元

6. SQL語句中包含哪兩類通配符進行字元串查詢

% 和_ 是通配符,%代表一個或多個字元, _代表一個字元
select* from 表名 where 欄位 like '%a'----查詢以a結束的信息
select* from 表名 where 欄位 like '_a'----查詢以a結束的2個字元的信息
select* from 表名 where 欄位 like '%[abc]'----查詢以 a或者b或者c 結束的信息
select* from 表名 where 欄位 like '%[^a]'----查詢不以 a 結束的信息

7. SQL 通配符的使用

例子 1
現在,我們希望從上面的 Persons 表中選取名字的第一個字元之後是 eorge 的人:
我們可以使用下面的 SELECT 語句:
SELECT * FROM PersonsWHERE FirstName LIKE '_eorge'結果集: Id LastName FirstName Address City 2 Bush George Fifth Avenue New York 接下來,我們希望從 Persons 表中選取的這條記錄的姓氏以 C 開頭,然後是一個任意字元,然後是 r,然後是任意字元,然後是 er:
我們可以使用下面的 SELECT 語句:
SELECT * FROM PersonsWHERE LastName LIKE 'C_r_er'結果集: Id LastName FirstName Address City 3 Carter Thomas Changan Street Beijing 例子 1
現在,我們希望從上面的 Persons 表中選取居住的城市以 A 或 L 或 N 開頭的人:
我們可以使用下面的 SELECT 語句:
SELECT * FROM PersonsWHERE City LIKE '[ALN]%'結果集: Id LastName FirstName Address City 1 Adams John Oxford Street London 2 Bush George Fifth Avenue New York

8. sql 通配符

%
包含零個或多個字元的任意字元串。
WHERE title LIKE '%computer%' 將查找在書名中任意位置包含單詞 "computer" 的所有書名。

_(下劃線)
任何單個字元。
WHERE au_fname LIKE '_ean' 將查找以 ean 結尾的所有 4 個字母的名字(Dean、Sean 等)。

[ ]
指定范圍 ([a-f]) 或集合 ([abcdef]) 中的任何單個字元。
WHERE au_lname LIKE '[C-P]arsen' 將查找以 arsen 結尾並且以介於 C 與 P 之間的任何單個字元開始的作者姓氏,例如 Carsen、Larsen、Karsen 等。

[^]
不屬於指定范圍 ([a-f]) 或集合 ([abcdef]) 的任何單個字元。
WHERE au_lname LIKE 'de[^l]%' 將查找以 de 開始並且其後的字母不為 l 的所有作者的姓氏。

9. Sql通配符

% 零或者多個字元
_ 單一任何字元(下劃線)
\ 特殊字元
[] 在某一范圍內的字元,如[0-9]或者[aeth]
[^] 不在某范圍內的字元,如[^0-9]或者[^aeth]