Rumah pangkalan data tutorial mysql 在SQL查询中使用LIKE来代替IN查询的方法

在SQL查询中使用LIKE来代替IN查询的方法

Jun 07, 2016 pm 06:02 PM
in like pertanyaan sql

在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)+'%'
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Petua untuk menggunakan i18n untuk melaksanakan penukaran berbilang bahasa dalam Vue Petua untuk menggunakan i18n untuk melaksanakan penukaran berbilang bahasa dalam Vue Jun 25, 2023 am 09:33 AM

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

Apakah maksud antara muka keluar dan masuk? Apakah maksud antara muka keluar dan masuk? Sep 28, 2021 pm 04:39 PM

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.

Apakah perbezaan antara REGEXP MySQL dan LIKE? Apakah perbezaan antara REGEXP MySQL dan LIKE? May 30, 2023 pm 01:58 PM

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

Soalan temu bual Meituan: Pernahkah anda menghadapi SQL yang perlahan? Bagaimana ia diselesaikan? Soalan temu bual Meituan: Pernahkah anda menghadapi SQL yang perlahan? Bagaimana ia diselesaikan? Aug 24, 2023 pm 03:41 PM

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 pertanyaan SQL yang kompleks PHP dan PDO: Bagaimana untuk melaksanakan pertanyaan SQL yang kompleks Jul 28, 2023 pm 03:43 PM

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

Bagaimana untuk menggunakan operator LIKE pangkalan data mysql dalam python Bagaimana untuk menggunakan operator LIKE pangkalan data mysql dalam python May 31, 2023 pm 09:46 PM

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

Apakah perbezaan antara on, in, as, dan where dalam Mysql? Apakah perbezaan antara on, in, as, dan where dalam Mysql? Jun 03, 2023 am 11:37 AM

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;

Apakah operasi jadual biasa dalam pengaturcaraan PHP? Apakah operasi jadual biasa dalam pengaturcaraan PHP? Jun 12, 2023 am 09:46 AM

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>

See all articles