在SQL查询中使用LIKE来代替IN查询的方法
在SQL查询中根据已知ID的集合来查询结果我们通常会用到IN,直接在IN后面给出ID的集合或是在IN后面跟一个子查询。
如下:代码如下:
SELECT * FROM Orders
WHERE OrderGUID IN('BC71D821-9E25-47DA-BF5E-009822A3FC1D','F2212304-51D4-42C9-AD35-5586A822258E')
可以看出直接在IN后面跟ID的集合需要将每一个ID都用单引号引起来。在实际应用中会遇到这么一种情况,在界面中收集的是一串GUID的拼接字符串,中间以逗号隔开,如果作为参数传到一个存储过程中执行,最终生成的语句会是下面这样:
代码如下:
SELECT * FROM Orders
WHERE OrderGUID IN('BC71D821-9E25-47DA-BF5E-009822A3FC1D,F2212304-51D4-42C9-AD35-5586A822258E')
这样就不能查询到正确的结果。
一般情况下我们解决此问题的思路是将传入的字符串用一个split函数来处理,最终处理的结果是一张表,然后将这个表做自查询即可,如下:
代码如下:
DECLARE @IDs VARCHAR(4000)
SET @IDs='BC71D821-9E25-47DA-BF5E-009822A3FC1D,F2212304-51D4-42C9-AD35-5586A822258E'
DECLARE @temp TABLE(str VARCHAR(50))
INSERT INTO @temp
SELECT * FROM dbo.Split(@IDs,',')
SELECT * FROM Orders WHERE OrderGUID IN (SELECT str FROM @temp)
当然split函数系统比不提供,需要我们自己写:
代码如下:
CREATE FUNCTION Split
(
@SourceSql varchar(8000),
@StrSeprate varchar(10)
)
RETURNS @temp TABLE(F1 VARCHAR(100))
AS
BEGIN
DECLARE @i INT
SET @SourceSql=rtrim(ltrim(@SourceSql))
SET @i=charindex(@StrSeprate,@SourceSql)
WHILE @i>=1
BEGIN
INSERT @temp VALUES(left(@SourceSql,@i-1))
SET @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
SET @i=charindex(@StrSeprate,@SourceSql)
END
IF @SourceSql''
INSERT @temp VALUES(@SourceSql)
RETURN
END
像这样做非常麻烦,而且还需要借助函数来实现,下面介绍一种简单的方法,因为GUID是唯一的,所以在上面的例子中可以使用LIKE来代替IN也可以达到同样的查询效果:
代码如下:
SELECT * FROM Orders
WHERE 'BC71D821-9E25-47DA-BF5E-009822A3FC1D,F2212304-51D4-42C9-AD35-5586A822258E'
LIKE '%'+convert(VARCHAR(40),OrderGUID)+'%'

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Dengan pembangunan pengantarabangsaan yang berterusan, semakin banyak laman web dan aplikasi perlu menyokong fungsi penukaran berbilang bahasa. Sebagai rangka kerja bahagian hadapan yang popular, Vue menyediakan pemalam yang dipanggil i18n yang boleh membantu kami mencapai penukaran berbilang bahasa. Artikel ini akan memperkenalkan teknik biasa untuk menggunakan i18n untuk mencapai penukaran berbilang bahasa dalam Vue. Langkah 1: Pasang pemalam i18n Mula-mula, kita perlu menggunakan npm atau benang untuk memasang pemalam i18n. Masukkan arahan berikut pada baris arahan: npminst

Antara muka keluar merujuk kepada antara muka keluaran, dan antara muka masuk merujuk kepada antara muka masukan. Antara muka keluar secara amnya mewakili antara muka keluaran talian sumber audio, yang digunakan untuk menyambungkan beban, seperti pembesar suara, fon kepala, dsb. manakala antara muka masuk secara amnya mewakili antara muka input talian sumber audio, yang digunakan untuk menyambungkan pemain CD, mudah alih telefon, pemain MP3, komputer, dsb.

1. Perbezaan dalam kandungan yang sepadan memerlukan keseluruhan data dengan Suka, semua kandungan medan ini mesti memenuhi syarat-syarat sahaja; 2. Perbezaan dalam kedudukan sepadan: LIKE sepadan dengan keseluruhan lajur Jika teks yang dipadankan muncul dalam nilai lajur, LIKE tidak akan menemuinya dan baris yang sepadan tidak akan dikembalikan (melainkan kad bebas digunakan dalam nilai lajur). . Untuk melakukan padanan, jika teks yang dipadankan muncul dalam nilai lajur, REGEXP akan menemuinya, baris yang sepadan akan dikembalikan dan REGEXP boleh memadankan keseluruhan nilai lajur (kesan yang sama seperti SUKA). 3. Pernyataan SQL mengembalikan data yang berbeza daripada padanan LIKE: pernyataan SQL

Log pertanyaan lambat MySQL ialah rekod log yang disediakan oleh MySQL Ia digunakan untuk merekod pernyataan dalam MySQL yang masa pertanyaannya melebihi (lebih daripada) ambang yang ditetapkan (long_query_time) dan merekodkannya dalam log pertanyaan perlahan.

PHP dan PDO: Bagaimana untuk melaksanakan pernyataan pertanyaan SQL yang kompleks Apabila memproses operasi pangkalan data, PHP menyediakan perpustakaan sambungan yang berkuasa PDO (PHPDataObjects) untuk memudahkan interaksi dengan pangkalan data. PDO menyokong pelbagai pangkalan data, seperti MySQL, SQLite, dsb., dan juga menyediakan pelbagai fungsi dan kaedah untuk memudahkan pembangun melaksanakan pelbagai operasi pangkalan data. Artikel ini akan memperkenalkan cara menggunakan PDO untuk melaksanakan pernyataan pertanyaan SQL yang kompleks dan melampirkan contoh kod yang sepadan. Sambung ke pangkalan data

Operator LIKE digunakan untuk mencari corak tertentu dalam lajur dalam klausa WHERE. Sintaks: SELECTcolumn_name(s)FROMtable_nameWHEREcolumn_nameLIKEpatternpattern Di sinilah templat yang ditentukan diletakkan dan "%" digunakan di sini, juga dipanggil aksara kad bebas %. Jika ia diletakkan di hadapan syarat, ia akan mencari data yang berakhir dengan.. .; contohnya: % Jika Li% diletakkan selepas keadaan, maka data yang bermula dengan... dicari sebagai contoh: Li%% Jika ia wujud sebelum dan selepas keadaan, maka data yang disertakan dicari; : %李% Titik pengetahuan kecil: ERROR1064 (42000):Youhaveane

Perbezaan antara Mysqlon, dalam, sebagai, di mana Jawapan: Di mana keadaan pertanyaan, gunakan pada untuk sambungan dalaman dan luaran, sebagai alias, untuk bertanya sama ada nilai tertentu mencipta 2 jadual dalam keadaan tertentu: pelajar, pelajar skor: skor: whereSELECT*FROMstudentWHEREs_sex=' Male'Contohnya: onSELECT*FROMstudentLEFTJOINscoreonstudent.s_id=score.s_id gabungan pada dan di mana: SELECT*FROMstudentLEFTJOINs;

Dalam pembangunan Web, jadual adalah elemen yang paling asas dan biasa digunakan, dan PHP ialah bahasa pengaturcaraan sebelah pelayan yang popular Terdapat banyak teknik dan kaedah biasa dalam operasi jadual. Artikel ini akan memperkenalkan operasi jadual biasa dalam pengaturcaraan PHP. Memaparkan jadual data Dalam PHP, anda boleh menggunakan teg jadual dalam HTML untuk memaparkan jadual data Perlu diingat bahawa jadual mesti dijana dalam skrip PHP. Berikut ialah contoh teg jadual HTML asas: <table><tr>
