谈谈SQL查询字段被包含语句问题
说到SQL的模糊查询,最先想到的,应该就是like关键字。当我们需要查询包含某个特定字段的数据时,往往会使用 ‘%关键字%’ 查询的方式。具体代码示例大家参考下本文
前言
说到SQL的模糊查询,最先想到的,应该就是like关键字。
当我们需要查询包含某个特定字段的数据时,往往会使用 ‘%关键字%' 查询的方式。例如:
SELECT ... FROM 表名 WHERE 字段名 LIKE '%关键字%'
这应该可以算是一种典型的”包含XXX”的方式,但如果我们需要查询字段被包含于特定字符的数据时呢?
比如,我有一张联系人数据表ConnectName,其中有个字段用于记录姓名name。我想获取名为小兰和灰原的人的联系资料。正常情况下,我们首先能想到的做法应该是:
SELECT * FROM ConnectName WHERE name = '小兰' OR name = '灰原'
这样的做法是可以实现这种目的的。如果这时候,我突然想,再查一个人,比如说“柯南”,那么我们就要修改SQL的结构,添加一个Where条件句:
SELECT * FROM ConnectName WHERE name = '小兰' OR name = '灰原' OR name = '柯南'
我们知道,OR条件查询本身是属于效率较低的,而且结构变动的语句在MyBatis实现稍微麻烦些(当然也是可以实现的,遍历插入字段就行了)。
能不能简单一些呢?我可以把所有关键字放在一起,只用一个Where条件去实现吗?
CHARINDEX登场
这时候,我们就可以用 CHARINDEX 关键字了,CHARINDEX可以返回某个字段在一串文字中出现的位置,跟String的indexOf用法类似,不多废话,我们来举个栗子:
CHARINDEX('李白','曹操很帅') =0
在上面的栗子中,因为曹操很帅不包含李白关键字,所以找不到,返回0.
CHARINDEX('李白','李白很帅') =1
同样的栗子,因为包含里李白关键字,会返回关键字所在的开头第一个字的索引,所以返回1.
了解了使用方法之后,我们就可以运用CHARINDEX关键字优化下我们的SQL语句:
SELECT * FROM ConnectName WHERE CHARINDEX(name ,'小兰灰原柯南')>0
如果name字段对应的名字在 ‘小兰灰原柯南' 中出现,那么CHARINDEX函数就会返回大于1,就可以得到我们想要的数据啦(他们3个人也可以在一起愉快的玩耍咯^-^)
对应的mybatis实现也相对简洁
SELECT * FROM ConnectName WHERE <!--[CDATA[ AND CHARINDEX(name ,#{传入的参数}) --> 0 ]]>
如果后期我们想要加入一个新的人,比如毛利小五郎,只需要在传入的参数中加入 ‘小兰灰原柯南毛利小五郎' 就可以了,是不是简单了许多呢?
Atas ialah kandungan terperinci 谈谈SQL查询字段被包含语句问题. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

PHP ialah bahasa skrip yang digunakan secara meluas dalam pembangunan laman web Bagi pembangun, selalunya perlu untuk menentukan sama ada medan itu kosong. Dalam PHP, menentukan sama ada medan kosong boleh dicapai melalui beberapa kaedah mudah. Artikel ini akan memperkenalkan cara untuk menentukan sama ada medan kosong dalam PHP dan memberikan contoh kod khusus untuk rujukan anda. Dalam PHP, anda biasanya boleh menggunakan fungsi kosong() atau fungsi isset() untuk menentukan sama ada medan kosong. Seterusnya, kami memperkenalkan penggunaan kedua-dua fungsi ini masing-masing. Gunakan fungsi kosong().

NoSuchFieldError dalam Java - Penyelesaian kepada medan tidak ditemui Java ialah bahasa pengaturcaraan peringkat tinggi yang digunakan secara meluas dalam aplikasi peringkat perusahaan dan pemprosesan data berskala besar. Semasa proses pembangunan Java, ralat seperti NoSuchFieldError mungkin berlaku. Ralat ini bermakna JVM tidak dapat mencari medan yang diperlukan pada masa jalan. Dalam artikel ini, kami akan melihat NoSuchFieldError dengan lebih mendalam dan cara menyelesaikannya. Apakah itu NoSuchFieldE

Medan mysql ialah lajur jenis dan panjang tertentu dalam jadual pangkalan data mysql yang digunakan untuk menyimpan data. Dalam MySQL, setiap medan mesti mempunyai jenis data tertentu Jenis data biasa termasuk integer, nombor titik terapung, rentetan, tarikh dan masa ini menentukan data yang boleh disimpan oleh MySQL dalam setiap medan.

增加表中字段的方法:1、使用“ALTER TABLE 表名 ADD 新字段名 数据类型;”语句在末尾添加字段;2、使用“ALTER TABLE 表名 ADD 新字段名 数据类型 FIRST;”语句在开头添加字段;3、使用“ALTER TABLE 表名 ADD 新字段名 数据类型 [约束条件] AFTER 已经存在的字段名;”语句在中间位置添加字段。

Dengan perkembangan aplikasi web, bahasa PHP telah digunakan secara meluas dalam pembangunan web. Dalam versi PHP8.0, ciri bahasa baharu telah diperkenalkan - pernyataan multi-catch. Apakah pernyataan berbilang tangkapan? Dalam versi PHP sebelumnya, pembangun perlu menulis berbilang kenyataan tangkapan untuk mengendalikan berbilang jenis pengecualian. Sebagai contoh, blok kod berikut menunjukkan pengendalian dua pengecualian berbeza: cuba{//Somecodethatmay

Bagaimana untuk melaksanakan pernyataan untuk membuka kunci jadual dalam MySQL? Dalam MySQL, kunci meja ialah mekanisme penguncian yang biasa digunakan untuk melindungi integriti dan konsistensi data. Apabila transaksi membaca dan menulis pada jadual, transaksi lain tidak boleh mengubah suai jadual. Mekanisme penguncian ini memastikan ketekalan data pada tahap tertentu, tetapi ia juga boleh menyebabkan transaksi lain disekat. Oleh itu, jika transaksi tidak dapat diteruskan atas sebab tertentu, kami perlu membuka kunci jadual secara manual supaya transaksi lain dapat diteruskan. MySQL menyediakan pelbagai

Bagaimana untuk mengetahui sama ada rentetan mengandungi aksara tertentu menggunakan JavaScript? Dalam JavaScript, kita boleh menggunakan beberapa kaedah untuk menentukan sama ada rentetan mengandungi aksara tertentu. Tiga kaedah yang biasa digunakan akan diperkenalkan di bawah dan contoh kod yang sepadan akan diberikan. Kaedah 1: Gunakan kaedah indexOf() Anda boleh menggunakan kaedah indexOf() rentetan untuk menentukan sama ada rentetan mengandungi aksara yang ditentukan. Ia mengembalikan indeks kejadian pertama aksara tertentu dalam rentetan, seperti

jQuery ialah perpustakaan JavaScript terkenal yang menyediakan fungsi mudah dan berkuasa untuk memudahkan pengaturcaraan JavaScript. Apabila memperkenalkan jQuery ke dalam projek web anda, anda perlu menambah kod berikut pada fail HTML untuk memperkenalkan pakej yang diperlukan: Halaman Web Saya
