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
Case InsensitiveSELECT * FROM foo WHERE name LIKE 'GSR\\_%' || name LIKE 'GSRSYS\\_%'
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