6 Mayıs 2022 Cuma

LIKE

LIKE ve CONCAT
Elimizde şöyle bir SQL olsun. Bu çalışmaz
SELECT id, first_name, last_name, concat(first_name,' ',last_name) AS full_name
FROM mytable 
WHERE full_name LIKE '%scott%'
Açıklaması şöyle. Çünkü MyQL önce where cümlesini çalıştırıyor. Oracle ise önce SELECT sonra WHERE cümlesini çalıştırıyor. Dolayısıyla farklı sonuçlar alabiliriz.
You cannot use a field computed in the SELECT clause in the WHERE clause, because most (if not all) RDBMS evaluate the WHERE clause before the SELECT.
Bunu düzeltmek için sub-select kullanılabilir. Şöyle yaparız
SELECT  *
  FROM  (
        SELECT  id,
                first_name,
                last_name,
                CONCAT(first_name,' ',last_name) AS full_name
          FROM  mytable
        ) a
  WHERE full_name LIKE '%scott%'

Case Sensitive
Örnek
Şöyle yaparız
SELECT * FROM foo WHERE name LIKE 'GSR\\_%' || name LIKE 'GSRSYS\\_%'
Case Insensitive
COLLATE UTF8_GENERAL_CI kullanılır

Örnek
Şöyle yaparız
SELECT * FROM foo WHERE name COLLATE UTF8_GENERAL_CI
  LIKE 'GSR\\_%' || name LIKE 'GSRSYS\\_%'

Hiç yorum yok:

Yorum Gönder

Soft Delete

Giriş Açıklaması  şöyle When using the soft delete mechanism on the database, you might run into a situation where a record with a unique co...