MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Temukan String di dalam String di SQL

Sebagian besar DBMS utama memberi kita cara untuk menemukan string di dalam string menggunakan SQL. Dengan ini, maksud saya menggunakan kueri SQL untuk menemukan posisi substring dalam string.

Ada beberapa fungsi SQL yang memungkinkan kita melakukan ini, termasuk INSTR() , LOCATE() , POSITION() , dan CHARINDEX() . Fungsi yang Anda gunakan akan bergantung pada DBMS Anda, dan mungkin apakah Anda perlu menentukan posisi awal atau tidak.

Oracle

Oracle memiliki INSTR() fungsi yang mengembalikan posisi awal substring tertentu dalam string.

Contoh:

SELECT INSTR('Big fat cat', 'fat')
FROM DUAL;

Hasil:

5

Ini menunjukkan kepada kita bahwa substring fat dimulai dari posisi 5 dalam string Big fat cat .

Dimungkinkan untuk menentukan posisi awal dengan memberikan argumen ketiga. Kami juga dapat memberikan argumen keempat untuk menentukan kemunculan mana yang akan ditemukan:

SELECT INSTR('That fat cat', 'at', 1, 2)
FROM DUAL;

Hasil:

7

Dalam hal ini saya memulai pencarian di posisi 1 dan mencari kemunculan kedua (dengan menggunakan 2 sebagai argumen keempat).

Oracle juga memiliki INSTRB() fungsi yang melakukan hal serupa, kecuali mengembalikan posisi berdasarkan byte.

MySQL

MySQL memiliki INSTR() fungsi yang melakukan hal yang mirip dengan fungsi Oracle Database dengan nama yang sama:

SELECT INSTR('Cats and dogs like to run', 'dogs');

Hasil:

10

Namun, jika Anda perlu menentukan posisi awal, Anda harus menggunakan LOCATE() atau POSITION() :

SELECT LOCATE('cat', 'One cat jumped over the other cat', 6);

Hasil:

31

Di sini, kemunculan pertama cat dimulai pada posisi 5, tetapi saya menetapkan pencarian untuk memulai pada posisi 6. Oleh karena itu, posisi kemunculan berikutnya dari string itu adalah yang dikembalikan.

Perhatikan bahwa, meskipun pencarian dimulai pada posisi 6, fungsi tersebut masih mengembalikan posisi substring dalam string – bukan dari posisi awal.

POSITION() function adalah sinonim untuk sintaks dua argumen LOCATE() , tetapi dengan sintaks yang sedikit berbeda (POSITION() tidak mengizinkan kami untuk menentukan posisi awal).

MySQL juga memiliki REGEX_INSTR() fungsi yang mengembalikan indeks awal dari substring string yang cocok dengan ekspresi reguler yang ditentukan oleh pola yang ditentukan.

MariaDB

Seperti MySQL, MariaDB juga memiliki INSTR() fungsi, serta a LOCATE() dan POSITION() fungsi:

SELECT 
    INSTR('No news is good news', 'news') AS "INSTR",
    POSITION('news' IN 'No news is good news') AS "POSITION",
    LOCATE('news', 'No news is good news') AS "LOCATE 1",
    LOCATE('news', 'No news is good news', 5) AS "LOCATE 2";

Hasil:

+-------+----------+----------+----------+
| INSTR | POSITION | LOCATE 1 | LOCATE 2 |
+-------+----------+----------+----------+
|     4 |        4 |        4 |       17 |
+-------+----------+----------+----------+

MariaDB juga memiliki REGEX_INSTR() fungsi yang mengembalikan indeks awal dari substring string yang cocok dengan ekspresi reguler yang ditentukan oleh pola yang ditentukan.

SQL Server

Ketika datang ke SQL Server, CHARINDEX() fungsi yang kami cari:

SELECT CHARINDEX('Bob', 'Bob likes beer. Bob also likes beef.', 16);

Hasil:

17

Dalam hal ini saya menggunakan argumen ketiga opsional untuk menentukan posisi awal.

SQL Server juga memiliki PATINDEX() fungsi yang mencari pola dalam string.

SQLite

SQLite memiliki INSTR() berfungsi untuk memenuhi kebutuhan kita:

SELECT INSTR('Black cat', 'lack');

Hasil:

2

PostgreSQL

Di PostgreSQL, kita perlu menggunakan POSITION() fungsi:

SELECT POSITION('Break' IN 'Bangkok Breaking');

Hasil:

9

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cara Menyebarkan ClusterControl di AWS untuk Mengelola Database Cloud Anda

  2. MongoDB dan bergabung

  3. Bagaimana cara mempercepat Sisipan MongoDB/detik?

  4. Spring Data MongoDB – Indeks, Anotasi, dan Konverter

  5. Mongorestore, dari server produksi meteor ke lokal