5 Ekim 2017 Perşembe

MySQL String Metodları

Giriş
MySQL String metodlarının listesi burada

Cast
Cast tam olarak bir string metodu sayılmaz ancak string'i sayıya çevirdiği için yazıya dahil ettim. Şöyle yaparız.
update <table> set new_column = CAST(ColumnName AS UNSIGNED);
Field metodu
Açıklaması şöyle
MySQL FIELD() returns the index position of the searching string from a list of strings. If search string is not found, it returns a 0(zero). If search string is NULL, the return value is 0 because NULL fails equality comparison with any value.
Şöyle yaparız.
SELECT * FROM `students` WHERE `id` IN (83, 84)
ORDER BY FIELD(`id`, 83, 84);
Convert - Expression + Type
Elimizde char tipi olan DOB sütunu olsun. String'den Integer'a çevirmek için şöyle yaparız.
SELECT * 
FROM employees
WHERE CONVERT(DOB, INTEGER) >= 1960
   AND CONVERT(DOB, INTEGER) <= 1969
Find_In_Set metodu
Açıklaması şöyle
MySQL FIND_IN_SET() returns the position of a string if it is present (as a substring) within a list of strings. The string list itself is a string contains substrings separated by ‘,’ (comma) character.

This function returns 0 when search string does not exist in the string list and returns NULL if either of the arguments is NULL.
Söz dizimi şöyle
FIND_IN_SET (search string, string list)
Parametreler şöyle
search string   A string which is to be looked for in following list of arguments.
string list     List of strings to be searched if they contain the search string.
Şöyle yaparız
SELECT * FROM `students` WHERE `id` IN (83,84)
ORDER BY FIND_IN_SET(id,'83,84')
Like
SQL dünyasında "%xx%" şeklinde kullanıma "un-anchored search pattern" deniliyor. Şöyle yaparız.
foo LIKE '%bar%'
Eğer "like%" şeklinde kullanırsak anchored search pattern deniliyor. Açıklaması şöyle
If you lack a % on either side, it is said that the search pattern anchors to the start or end of the string respectively. This lingo comes from the regex world.
Şöyle yaparız.
foo like 'bar%'
Bazen de like ta belirtilen örüntü "needle" olarak adlandırılıyor. "Haystack" ise needle'dan daha uzun veri. Yani "samanlıkta iğne aramak" :) Şöyle yaparız.
SET @hayStack := 'www.example.com';
SET @needle := 'www.example.com/test';

SELECT 

IF(LENGTH(@hayStack) > LENGTH(@needle), 
    @hayStack LIKE CONCAT('%',@needle,'%'),
    @needle LIKE CONCAT('%',@hayStack,'%')
)
Like ve Concat
Eğer sütun verisi örüntümüz olacaksa şöyle yaparız.
SELECT * FROM db WHERE 'www.example.com/test' LIKE CONCAT('%',urlColumn,'%');
Like ve Group By
Örüntüyü belirtip sütun içinde arama yapacaksak şöyle yaparız.
SELECT country,COUNT(*)  
FROM Table1
WHERE aut_name LIKE "%a%"
GROUP BY country;

Substring metodu
İlk iki karakter ayırmak için şöyle yaparız
select * from yourtable order by CONVERT(INT, SUBSTRING(title, 1 , 2)) ASC
Substring_Index metodu
Boşluğun solundaki ilk token ve sağındaki ilk token'ı almak için şöyle yaparız
select * from yourtable order by CONVERT(INT, SUBSTRING_INDEX(title, ' ', 1)) ASC,
SUBSTRING_INDEX(title, ' ', -1) ASC




Hiç yorum yok:

Yorum Gönder