Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analiz Platformu Sistemi (PDW)
Microsoft Fabric'teki SQL analiz uç noktası
Microsoft Fabric'teki ambar
Microsoft Fabric'teki SQL veritabanı
Belirli bir karakter dizesinin belirtilen desenle eşleşip eşleşmediğini belirler. Desen normal karakterler ve joker karakterler içerebilir. Desen eşleştirme sırasında, normal karakterler karakter dizesinde belirtilen karakterlerle tam olarak eşleşmelidir. Ancak joker karakterler, karakter dizesinin rastgele parçalarıyla eşleştirilebilir. Joker karakterlerin LIKE kullanılması, işleci ve = dize karşılaştırma işleçlerini kullanmaktan != daha esnek hale getirir. Bağımsız değişkenlerden herhangi biri karakter dizesi veri türünde değilse, SQL Server Veritabanı Altyapısı mümkünse bunu karakter dizesi veri türüne dönüştürür.
Transact-SQL söz dizimi kuralları
Syntax
SQL Server ve Azure SQL Veritabanı söz dizimi:
match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]
Azure Synapse Analytics ve Paralel Veri Ambarı söz dizimi:
match_expression [ NOT ] LIKE pattern
ESCAPE ve STRING_ESCAPE Azure Synapse Analytics veya Analytics Platform Sistemi'nde (PDW) desteklenmez.
Arguments
match_expression
Karakter veri türünün geçerli ifadeleri .
pattern
match_expression içinde aranacak belirli karakter dizesi ve aşağıdaki tabloda geçerli joker karakterler içerebilir. deseni en fazla 8.000 bayt olabilir.
match_expressiondesenden daha yüksek bir öncelik veri türüyse ve desen uzunluğu match_expression'den büyükse, desen değerinin match_expression türüne örtük olarak dönüştürülmesi sırasında bir kesme hatası alırsınız.
| Wild card karakter | Description | Example |
|---|---|---|
% |
Sıfır veya daha fazla karakterden oluşan herhangi bir dize. |
WHERE title LIKE '%computer%' , kitap başlığının herhangi bir yerinde sözcüğü computer olan tüm kitap başlıklarını bulur. |
_ (alt çizgi) |
Herhangi bir tek karakter. |
WHERE au_fname LIKE '_ean', (ean, Deanvb.) ile Sean biten dört harfli adların tümünü bulur. |
[ ] |
Belirtilen aralıktaki [a-f] veya kümesindeki [abcdef]herhangi bir tek karakter. |
WHERE au_lname LIKE '[C-P]arsen've arasında arsenC tek bir karakterle P biten ve ile başlayan yazar soyadlarını bulur, örneğinCarsen, , Larsen, Karsenvb. Aralık aramalarında, aralığa dahil edilen karakterler harmanlamanın sıralama kurallarına bağlı olarak değişebilir. |
[^] |
Belirtilen aralıkta [^a-f] olmayan veya ayarlamayan [^abcdef]herhangi bir tek karakter. |
WHERE au_lname LIKE 'de[^l]%' ile de başlayan ve aşağıdaki harfin olmadığı ltüm yazar soyadlarını bulur. |
escape_character
Joker karakterin joker karakter olarak değil normal karakter olarak yorumlandığını belirtmek için joker karakterin önüne konan karakter. escape_character , varsayılan değeri olmayan ve yalnızca bir karakter olarak değerlendirmesi gereken bir karakter ifadesidir.
Sonuç türü
Boolean
Sonuç değeri
LIKE
match_expression belirtilen desenle eşleşiyorsa TRUE döndürür.
Remarks
kullanarak LIKEdize karşılaştırmaları yaptığınızda, desen dizesindeki tüm karakterler önemlidir. Önemli karakterler baştaki veya sondaki boşlukları içerir. Sorgudaki bir karşılaştırma, dize LIKE 'abc ' içeren tüm satırları (abcardından tek bir boşluk) döndürmekse, bu sütunun değerinin (abcboşluk olmadan) olduğu abc bir satır döndürülür. Ancak, desenin eşleştirildiği ifadede sondaki boşluklar yoksayılır. Sorgudaki bir karşılaştırma dizeyle LIKE 'abc' (abc boşluk olmadan) tüm satırları döndürmekse, sıfır veya abc daha fazla boşluk içeren tüm satırlar döndürülür.
Char ve varchar verileri içeren bir desen kullanan dize karşılaştırması, verilerin her veri türü için nasıl depolandığı nedeniyle bir LIKE karşılaştırma geçirmeyebilir. Aşağıdaki örnek, yerel bir char değişkenini saklı yordama geçirir ve ardından soyadı belirtilen karakter kümesiyle başlayan tüm çalışanları bulmak için desen eşleştirmeyi kullanır.
-- Uses AdventureWorks
CREATE PROCEDURE FindEmployee @EmpLName CHAR(20)
AS
SELECT @EmpLName = RTRIM(@EmpLName) + '%';
SELECT p.FirstName,
p.LastName,
a.City
FROM Person.Person p
INNER JOIN Person.Address a
ON p.BusinessEntityID = a.AddressID
WHERE p.LastName LIKE @EmpLName;
GO
EXEC FindEmployee @EmpLName = 'Barb';
GO
Yordamda FindEmployee , ad 20'den az karakter içerdiğinde char değişkeni (@EmpLName) sondaki boşlukları içerdiğinden hiçbir satır döndürülmüyor.
LastName Sütun varchar olduğundan, sondaki boşluklar yoktur. Sondaki boşluklar önemli olduğundan bu yordam başarısız olur.
Ancak, aşağıdaki örnek başarılı olur çünkü sondaki boşluklar bir varchar değişkenine eklenmez.
-- Uses AdventureWorks
CREATE PROCEDURE FindEmployee @EmpLName VARCHAR(20)
AS
SELECT @EmpLName = RTRIM(@EmpLName) + '%';
SELECT p.FirstName,
p.LastName,
a.City
FROM Person.Person p
INNER JOIN Person.Address a
ON p.BusinessEntityID = a.AddressID
WHERE p.LastName LIKE @EmpLName;
GO
EXEC FindEmployee @EmpLName = 'Barb';
GO
Sonuç kümesi aşağıdadır.
FirstName LastName City
---------- -------------------- ---------------
Angela Barbariol Snohomish
David Barber Snohomish
(2 row(s) affected)
LIKE kullanarak desen eşleşmesi
LIKE ASCII desen eşleştirmeyi ve Unicode desen eşleştirmeyi destekler. Tüm bağımsız değişkenler (match_expression, desen ve varsa escape_character) ASCII karakter veri türleri olduğunda, ASCII desen eşleştirmesi gerçekleştirilir. Bağımsız değişkenlerden herhangi biri Unicode veri türündeyse, tüm bağımsız değişkenler Unicode'a dönüştürülür ve Unicode desen eşleştirmesi gerçekleştirilir. ile Unicode verileri (nchar veya LIKE veri türleri) kullandığınızda, sondaki boşluklar önemlidir; ancak Unicode olmayan veriler için sondaki boşluklar önemli değildir. Unicode LIKE , ISO standardıyla uyumludur. ASCII LIKE , SQL Server'ın önceki sürümleriyle uyumludur.
Aşağıdaki örnek serisinde, ASCII ile Unicode LIKE desen eşleştirmesi arasında döndürülen satır farklılıkları gösterilmektedir.
-- 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
Note
LIKE karşılaştırmaları harmanlamadan etkilenir. Daha fazla bilgi için bkz. COLLATE (Transact-SQL).
% Joker karakteri kullanma
LIKE '5%' Simge belirtilirse, Veritabanı Altyapısı sıfır veya daha fazla karakterden oluşan bir dizenin ardından gelen sayıyı 5 arar.
Örneğin, aşağıdaki sorgu veritabanındaki AdventureWorks2025 tüm dinamik yönetim görünümlerini gösterir çünkü bunların tümü harfleriyle dmbaşlar.
-- Uses AdventureWorks
SELECT Name
FROM sys.system_views
WHERE Name LIKE 'dm%';
GO
Dinamik yönetim görünümleri olmayan tüm nesneleri görmek için kullanın NOT LIKE 'dm%'. Toplam 32 nesneniz varsa ve LIKE desenle eşleşen 13 ad bulursanız, NOT LIKE desenle eşleşmeyen LIKE 19 nesneyi bulur.
Gibi LIKE '[^d][^m]%'bir desenle her zaman aynı adları bulamayabilirsiniz. 19 ad yerine, yalnızca 14 ad bulabilirsiniz; bu adlar d ile başlayan veya m ikinci harf olarak sonuçlardan kaldırılmış olan tüm adlar ve dinamik yönetim görünümü adları olabilir. Bu davranışın nedeni, negatif joker karakterler içeren eşleştirme dizelerinin adım adım ve her seferinde bir joker karakter olarak değerlendirilmesidir. Değerlendirmenin herhangi bir noktasında eşleşme başarısız olursa, ortadan kalkar.
Joker karakterleri değişmez değer olarak kullanma
Joker karakter desen eşleştirme karakterlerini değişmez karakter olarak kullanabilirsiniz. Joker karakteri değişmez karakter olarak kullanmak için joker karakteri köşeli ayraç içine alın. Aşağıdaki tabloda anahtar sözcüğün ve joker karakterlerin LIKE kullanımına [ ] ilişkin çeşitli örnekler gösterilmektedir.
| Symbol | Meaning |
|---|---|
LIKE '5[%]' |
5% |
LIKE '[_]n' |
_n |
LIKE '[a-cdf]' |
a, b, c, dveya f |
LIKE '[-acdf]' |
-, a, c, dveya f |
LIKE '[ [ ]' |
[ |
LIKE ']' |
] |
LIKE 'abc[_]d%' |
abc_d ve abc_de |
LIKE 'abc[def]' |
abcd, abce ve abcf |
ESCAPE yan tümcesiyle desen eşleşmesi
Özel joker karakterlerden birini veya daha fazlasını içeren karakter dizelerini arayabilirsiniz. Örneğin, bir müşteri veritabanındaki indirimler tablosu, yüzde işareti (%) içeren indirim değerlerini depolar. Yüzde işaretini joker karakter yerine karakter olarak aramak için ESCAPE anahtar sözcüğü ve kaçış karakteri sağlanmalıdır. Örneğin, örnek veritabanı 30%metnini içeren comment adlı bir sütun içerir. Açıklama sütununun herhangi bir yerinde 30% dizesini içeren satırları aramak için gibi WHERE comment LIKE '%30!%%' ESCAPE '!'bir WHERE yan tümcesi belirtin. ESCAPE ve kaçış karakteri belirtilmezse, Veritabanı Altyapısı dizesine 30!sahip tüm satırları döndürür.
LIKE deseninde bir kaçış karakterinden sonra karakter yoksa, desen geçerli değildir ve LIKE işlevi YANLIŞ döndürür. Kaçış karakterinden sonraki karakter joker karakter değilse, kaçış karakteri atılır ve aşağıdaki karakter desende normal bir karakter olarak kabul edilir. Bu karakterler çift köşeli ayraç ([ ]) içine alınan yüzde işareti (%), alt çizgi (_) ve sol köşeli ayraç ([) joker karakterlerini içerir. Kaçış karakterleri, bir şapka işareti (^), kısa çizgi (-) veya sağ köşeli ayraç (]) kaçış karakteri dahil olmak üzere çift köşeli ayraç karakterleri ([ ]) içinde kullanılabilir.
0x0000 (char(0)), Windows harmanlamalarında tanımlanmamış bir karakterdir ve LIKE'ye eklenemez.
Examples
A. Joker karakterle % LIKE kullanma
Aşağıdaki örnek, tabloda alan kodu 415PersonPhone bulunan tüm telefon numaralarını bulur.
-- Uses AdventureWorks
SELECT p.FirstName,
p.LastName,
ph.PhoneNumber
FROM Person.PersonPhone AS ph
INNER JOIN Person.Person AS p
ON ph.BusinessEntityID = p.BusinessEntityID
WHERE ph.PhoneNumber LIKE '415%'
ORDER BY p.LastName;
GO
Sonuç kümesi aşağıdadır.
FirstName LastName Phone
----------------- ------------------- ------------
Ruben Alonso 415-555-124
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. Joker karakterle % DEĞİl LIKE kullanma
Aşağıdaki örnek, tablosundaki dışında PersonPhonealan kodları olan tüm telefon numaralarını 415 bulur.
-- Uses AdventureWorks
SELECT p.FirstName,
p.LastName,
ph.PhoneNumber
FROM Person.PersonPhone AS ph
INNER JOIN Person.Person AS p
ON ph.BusinessEntityID = p.BusinessEntityID
WHERE ph.PhoneNumber NOT LIKE '415%'
AND p.FirstName = 'Gail'
ORDER BY p.LastName;
GO
Sonuç kümesi aşağıdadır.
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 yan tümcesini kullanma
Aşağıdaki örnek, tablonun sütunundaki tam karakter dizesini ESCAPE bulmak için yan tümcesini ve kaçış karakterini kullanır10-15%.c1mytbl2
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'),
('Discount is .10-.15 off');
GO
SELECT c1
FROM mytbl2
WHERE c1 LIKE '%10-15!% off%' ESCAPE '!';
GO
D.
[ ] Joker karakterleri kullanma
Aşağıdaki örnek, tablodaki Person veya adlı CherylSherylçalışanları bulur.
-- Uses AdventureWorks
SELECT BusinessEntityID,
FirstName,
LastName
FROM Person.Person
WHERE FirstName LIKE '[CS]heryl';
GO
Aşağıdaki örnek, tablodaki Person veya soyadlarıyla çalışanların satırlarını ZhengZhangbulur.
-- Uses AdventureWorks
SELECT LastName,
FirstName
FROM Person.Person
WHERE LastName LIKE 'Zh[ae]ng'
ORDER BY LastName ASC,
FirstName ASC;
GO
Örnekler: Azure Synapse Analytics ve Analytics Platform Sistemi (PDW)
E. Joker karakterle % LIKE kullanma
Aşağıdaki örnek, ile DimEmployeebaşlayan telefon numaralarıyla tablodaki 612 tüm çalışanları bulur.
-- Uses AdventureWorks
SELECT FirstName,
LastName,
Phone
FROM DimEmployee
WHERE phone LIKE '612%'
ORDER BY LastName;
F. Joker karakterle % DEĞİl LIKE kullanma
Aşağıdaki örnek, tablosundaki DimEmployee ile 612başlamamış tüm telefon numaralarını bulur.
-- Uses AdventureWorks
SELECT FirstName,
LastName,
Phone
FROM DimEmployee
WHERE phone NOT LIKE '612%'
ORDER BY LastName;
G. Joker karakterle _ LIKE kullanma
Aşağıdaki örnek, tabloda ile 6 başlayan ve ile biten 2DimEmployee bir alan koduna sahip tüm telefon numaralarını bulur. % joker karakteri, telefon sütunu değerinde aşağıdaki tüm karakterleri eşleştirmek için arama düzeninin sonuna eklenir.
-- Uses AdventureWorks
SELECT FirstName,
LastName,
Phone
FROM DimEmployee
WHERE phone LIKE '6_2%'
ORDER BY LastName;