Heim Datenbank MySQL-Tutorial 在SQL查询中使用LIKE来代替IN查询的方法

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

Jun 07, 2016 pm 06:02 PM
in like 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)+'%'
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Tipps zur Verwendung von i18n zur Implementierung der Mehrsprachenumschaltung in Vue Tipps zur Verwendung von i18n zur Implementierung der Mehrsprachenumschaltung in Vue Jun 25, 2023 am 09:33 AM

Mit der kontinuierlichen Weiterentwicklung der Internationalisierung müssen immer mehr Websites und Anwendungen mehrsprachige Umschaltfunktionen unterstützen. Als beliebtes Front-End-Framework bietet Vue ein Plug-In namens i18n, das uns bei der Umschaltung mehrerer Sprachen helfen kann. In diesem Artikel werden gängige Techniken zur Verwendung von i18n zur Implementierung der Mehrsprachenumschaltung in Vue vorgestellt. Schritt 1: Installieren Sie das i18n-Plugin. Zuerst müssen wir das i18n-Plugin mit npm oder Yarn installieren. Geben Sie in der Befehlszeile den folgenden Befehl ein: npminst

Was bedeuten Out- und In-Schnittstellen? Was bedeuten Out- und In-Schnittstellen? Sep 28, 2021 pm 04:39 PM

Die Out-Schnittstelle bezieht sich auf die Ausgabeschnittstelle und die In-Schnittstelle bezieht sich auf die Eingabeschnittstelle. Die Out-Schnittstelle stellt im Allgemeinen die Line-Ausgangsschnittstelle der Audioquelle dar, die zum Anschließen von Lasten wie Lautsprechern, Kopfhörern usw. verwendet wird, während die In-Schnittstelle im Allgemeinen die Line-Eingangsschnittstelle der Audioquelle darstellt, die zum Anschluss von CD-Playern und Mobilgeräten verwendet wird Telefone, MP3-Player, Computer usw.

Was ist der Unterschied zwischen MySQLs REGEXP und LIKE? Was ist der Unterschied zwischen MySQLs REGEXP und LIKE? May 30, 2023 pm 01:58 PM

1. Der Unterschied im übereinstimmenden Inhalt erfordert, dass die gesamten Daten übereinstimmen. Bei „Gefällt mir“ müssen alle Inhalte dieses Felds nur teilweise übereinstimmen und nur ein Fragment muss erfüllt sein. 2. Der Unterschied in der Übereinstimmungsposition: LIKE stimmt mit der gesamten Spalte überein. Wenn der übereinstimmende Text im Spaltenwert vorkommt, wird er von LIKE nicht gefunden und die entsprechende Zeile wird nicht zurückgegeben (es sei denn, REGEXP liegt innerhalb des Spaltenwerts). . Wenn der übereinstimmende Text im Spaltenwert erscheint, wird er von REGEXP gefunden, die entsprechende Zeile wird zurückgegeben und REGEXP kann den gesamten Spaltenwert abgleichen (gleicher Effekt wie LIKE). 3. Die SQL-Anweisung gibt Daten zurück, die sich von der LIKE-Übereinstimmung unterscheiden: die SQL-Anweisung

Meituan-Interviewfrage: Sind Sie jemals auf langsames SQL gestoßen? Wie wurde es gelöst? Meituan-Interviewfrage: Sind Sie jemals auf langsames SQL gestoßen? Wie wurde es gelöst? Aug 24, 2023 pm 03:41 PM

Das langsame Abfrageprotokoll von MySQL ist ein von MySQL bereitgestellter Protokolldatensatz, der zum Aufzeichnen von Anweisungen in MySQL verwendet wird, deren Abfragezeit den festgelegten Schwellenwert (long_query_time) überschreitet, und sie im langsamen Abfrageprotokoll aufzeichnet.

PHP und PDO: So führen Sie komplexe SQL-Abfragen aus PHP und PDO: So führen Sie komplexe SQL-Abfragen aus Jul 28, 2023 pm 03:43 PM

PHP und PDO: So führen Sie komplexe SQL-Abfrageanweisungen aus. Bei der Verarbeitung von Datenbankoperationen stellt PHP eine leistungsstarke Erweiterungsbibliothek PDO (PHPDataObjects) zur Verfügung, um die Interaktion mit der Datenbank zu vereinfachen. PDO unterstützt eine Vielzahl von Datenbanken wie MySQL, SQLite usw. und bietet außerdem eine Fülle von Funktionen und Methoden, um Entwicklern die Durchführung verschiedener Datenbankoperationen zu erleichtern. In diesem Artikel wird die Verwendung von PDO zum Ausführen komplexer SQL-Abfrageanweisungen vorgestellt und entsprechende Codebeispiele angehängt. Stellen Sie eine Verbindung zur Datenbank her

So verwenden Sie den LIKE-Operator der MySQL-Datenbank in Python So verwenden Sie den LIKE-Operator der MySQL-Datenbank in Python May 31, 2023 pm 09:46 PM

Der LIKE-Operator wird verwendet, um in einer Spalte in der WHERE-Klausel nach einem angegebenen Muster zu suchen. Syntax: SELECTcolumn_name(s)FROMtable_nameWHEREcolumn_nameLIKEpatternpattern Hier wird die angegebene Vorlage platziert und hier wird „%“ verwendet, das auch als Platzhalterzeichen % bezeichnet wird. Wenn es vor der Bedingung platziert wird, wird nach Daten gesucht, die mit … enden. .; zum Beispiel: % Wenn Li% nach der Bedingung steht, werden die Daten gesucht, die mit... beginnen. Beispiel: Li%%. Wenn sie vor und nach der Bedingung vorhanden sind, werden zum Beispiel die enthaltenen Daten durchsucht : %李% Kleiner Wissenspunkt: ERROR1064 (42000):Youhaveane

Was ist der Unterschied zwischen on, in, as und where in MySQL? Was ist der Unterschied zwischen on, in, as und where in MySQL? Jun 03, 2023 am 11:37 AM

Der Unterschied zwischen Mysqlon, in, as, where Antwort: Wo Bedingungen abfragen, on für interne und externe Verbindungen verwenden, as als Alias, in um abzufragen, ob ein bestimmter Wert 2 Tabellen in einer bestimmten Bedingung erstellt: student, scorestudent: score: whereSELECT*FROMstudentWHEREs_sex=' Male'Zum Beispiel: onSELECT*FROMstudentLEFTJOINscoreonstudent.s_id=score.s_id; Kombination aus on und where: SELECT*FROMstudentLEFTJOINs

Was sind die häufigsten Tabellenoperationen in der PHP-Programmierung? Was sind die häufigsten Tabellenoperationen in der PHP-Programmierung? Jun 12, 2023 am 09:46 AM

In der Webentwicklung sind Tabellen die grundlegendsten und am häufigsten verwendeten Elemente, und PHP ist eine beliebte serverseitige Programmiersprache. Es gibt viele gängige Techniken und Methoden für Tabellenoperationen. In diesem Artikel werden gängige Tabellenoperationen in der PHP-Programmierung vorgestellt. Datentabellen anzeigen In PHP können Sie das Tabellen-Tag in HTML verwenden, um Datentabellen anzuzeigen. Beachten Sie, dass die Tabelle in einem PHP-Skript generiert werden muss. Hier ist ein Beispiel für ein einfaches HTML-Tabellen-Tag: <table><tr>

See all articles