27 Nisan 2022 Çarşamba

ILIKE Operator

Giriş
Açıklaması şöyle
ILIKE, a specific operator for PostgreSQL, has the same features as the LIKE operator but is case-insensitive. If special characters defined for the LIKE operator (% and _) are not found within the search text, ILIKE can be used as a case-insensitive equality operator. Although using it for equality checks is incorrect, ILIKE is the most suitable solution when case-insensitive pattern matching is desired. 

Örnek
Şöyle yaparız.
SELECT
  DISTINCT(event_type)
FROM
  storm_events
WHERE
  event_type ILIKE '%winter%'
Örnek
Şöyle yaparız. İ
SELECT DISTINCT x.address ->> 'long_name' AS country_name
FROM  (
    SELECT jsonb_array_elements(b.address) AS address
    FROM   brand b
    WHERE  jsonb_typeof(b.address) = 'array'            -- !!!
   ) x
WHERE  x.address ->> 'types' ILIKE ANY (ARRAY['%country%'::text]);

JSON Processing Functions

Giriş
Açıklaması şöyle
There’s a very long list of JSON Processing Functions, including functions (for example) to:
- expand a json array into different data types
- count elements
- extract objects (similar to “#>” and “#>>” operators)
- return the json keys
- set and insert (which replaces or adds path elements)
- path checking (exists, match, query)
- pretty and
- Typeof!
jsonb_typeof metodu
Verinin tipinin  örneğin array olup olmadığını anlamak için kullanılır

Örnek
address sütunu JSONB tipinden olsun ve içindeki veri şöyle olsun
{
"address":[ { "types":["route"], "long_name":"20203 113B Ave", "short_name":"20203 113B Ave" }, { "types":["locality","political"], "long_name":"Maple Ridge", "short_name":"Maple Ridge" }, ... ] }
Şöyle yaparız. İçteki sorguda b.address alanındaki dizi çekiliyor. Ancak dizi olması gerek bazı veri json array değil de jsonb. Bu yüzden önce array olmayan veri eleniyor. Daha sonra dış sorguda address nesnesinin long_name alanının değerine text olarak erişiliyor.
SELECT DISTINCT x.address ->> 'long_name' AS country_name
FROM  (
    SELECT jsonb_array_elements(b.address) AS address
    FROM   brand b
    WHERE  jsonb_typeof(b.address) = 'array'            -- !!!
   ) x
WHERE  x.address ->> 'types' ILIKE ANY (ARRAY['%country%'::text]);

21 Nisan 2022 Perşembe

COPY TO - Tabloyu Dosyaya Yazar

Giriş
Açıklaması şöyle
... the COPY TO command outputs the content of a table to a file.