Hologres aşağıdaki dize işlevlerini destekler. PostgreSQL ile uyumlu tüm dize işlevlerinin tam listesi için bkz. PostgreSQL İşlevleri.
İşlev dizini
Dize birleştirme, ayırma ve doldurma
| İşlev | Açıklama |
|---|---|
| STRING || STRING | İki dizeyi birleştirir. |
| CONCAT | NULL bağımsız değişkenleri yoksayarak iki veya daha fazla dizeyi birleştirir. |
| CONCAT_WS | NULL dize bağımsız değişkenlerini yoksayarak dizeleri bir ayırıcı ile birleştirir. |
| LISTAGG | Sütun değerlerini satırlar boyunca tek bir dizede toplar. Oracle uyumludur; orafce uzantısını gerektirir. |
| STRING_AGG | Sütun değerlerini satırlar boyunca tek bir dizede toplar. |
| LEFT | Bir dizenin başından karakterler ayıklar. |
| RIGHT | Bir dizenin sonundan karakterler ayıklar. |
| SPLIT_PART | Bir dizeyi bir ayırıcıya göre böler ve n. parçayı döndürür. |
| SUBSTRING | Konuma veya düzenli ifadeye göre bir alt dize ayıklar. Takma ad: SUBSTR (Oracle uyumlu form). |
| SUBSTR | Başlangıç konumundan bir alt dize ayıklar. Oracle uyumludur; orafce uzantısını gerektirir. Takma ad: SUBSTRING. |
| REGEXP_MATCH | Bir dizeyi düzenli ifadeyle eşleştirir ve eşleşmeleri bir dizi olarak döndürür. |
| REGEXP_SPLIT_TO_TABLE | Bir dizeyi düzenli ifadeye göre böler ve her parçayı bir satır olarak döndürür. |
| REGEXP_SPLIT_TO_ARRAY | Bir dizeyi düzenli ifadeye göre böler ve parçaları bir dizi olarak döndürür. |
| TRIM | Belirtilen karakterleri bir dizenin bir veya her iki ucundan kaldırır. |
| BTRIM | Belirtilen karakterleri bir dizenin her iki ucundan kaldırır. |
| LTRIM | Belirtilen karakterleri bir dizenin solundan (başından) kaldırır. |
| RTRIM | Belirtilen karakterleri bir dizenin sağından (sonundan) kaldırır. |
| LPAD | Bir dizeyi belirtilen uzunluğa kadar soldan doldurur. |
| RPAD | Bir dizeyi belirtilen uzunluğa kadar sağdan doldurur. |
Diğer dize işlevleri
| İşlev | Açıklama |
|---|---|
| ASCII | İlk karakterin ASCII kodunu döndürür. |
| CHAR_LENGTH | Bir dizenin karakter uzunluğunu döndürür. Takma ad: LENGTH. |
| LENGTH | Bir dizedeki karakter sayısını döndürür. Takma ad: CHAR_LENGTH. |
| CHR | Belirtilen kod değeri için karakteri döndürür. |
| INITCAP | Her kelimenin ilk harfini büyük harfe çevirir. |
| LOWER | Bir dizeyi küçük harfe çevirir. |
| UPPER | Bir dizeyi büyük harfe çevirir. |
| OCTET_LENGTH | Bir dizedeki bayt sayısını döndürür. |
| MD5 | Bir dizenin MD5 karmasını onaltılık biçimde döndürür. |
| POSITION | Bir alt dizenin bir dize içindeki konumunu döndürür. Takma ad: STRPOS. |
| STRPOS | Bir alt dizenin bir dize içindeki konumunu döndürür. Takma ad: POSITION. |
| INSTR | Bir alt dizenin bir dizenin belirli bir aralığındaki konumunu döndürür. Oracle uyumludur; orafce uzantısını gerektirir. |
| REPLACE | Bir alt dizenin tüm oluşumlarını başka bir dizeyle değiştirir. |
| REGEXP_REPLACE | POSIX düzenli ifadesiyle eşleşen alt dizeleri değiştirir. |
| TRANSLATE | Bir dizedeki tekil karakterleri değiştirir. |
| REPEAT | Bir dizeyi belirtilen sayıda tekrarlar. |
| STARTS_WITH | Bir dize belirtilen önekle başlıyorsa true döndürür. |
| PARSE_IDENT | Nitelikli bir SQL tanımlayıcı dizesini ayrıştırır. |
| QUOTE_IDENT | Geçerli bir SQL tanımlayıcısı olarak tırnak içine alınmış bir dize döndürür. |
| QUOTE_LITERAL | Geçerli bir SQL dize sabiti olarak tırnak içine alınmış bir dize döndürür. |
| TO_HEX | Bir tamsayıyı onaltılık gösterimine dönüştürür. |
| TO_NUMBER | Bir dizeyi sayısal türe dönüştürür. |
| PLVSTR.RVRS | Bir dizeyi tersine çevirir. Oracle uyumludur; orafce uzantısını gerektirir. |
| ROW | Geçerli satırın satır numarasını döndürür. Hologres V1.3 ve sonraki sürümlerde desteklenir. |
Dize birleştirme, ayırma ve doldurma
STRING \|\| STRING
İki dizeyi birleştirir.
Sözdizimi
<string_value1> TEXT || <string_value2> TEXT
Parametreler
| Parametre | Zorunlu | Açıklama |
|---|---|---|
string_value1 |
Evet | İlk dize ifadesi. |
string_value2 |
Evet | İkinci dize ifadesi. |
Dönüş türü: TEXT
Örnek
-- Returns: HologreSQL
SELECT 'Holo' || 'greSQL';
CONCAT
İki veya daha fazla dizeyi tek bir dizede birleştirir. NULL bağımsız değişkenler yoksayılır.
Sözdizimi
CONCAT(<str1> TEXT, <str2> TEXT, ..., <strN> TEXT)
Parametreler
| Parametre | Zorunlu | Açıklama |
|---|---|---|
str1, ..., strN |
Evet | Birleştirilecek dizeler. NULL değerler yoksayılır. |
Dönüş türü: TEXT
Örnek
SELECT CONCAT('abcde', 2, NULL, 22);
Sonuç:
concat
--------
abcde222
CONCAT_WS
İlk bağımsız değişkeni ayırıcı olarak kullanarak sonraki tüm bağımsız değişkenleri birleştirir.
Sözdizimi
CONCAT_WS(<sep> TEXT, str "any" [, str "any" [, ...]])
any türü, tüm veri türlerinin kabul edildiğini belirtir.
Parametreler
Zorunlu:
sep: Her dize arasına eklenecek ayırıcı. sep NULL ise işlev NULL döndürür.
İsteğe bağlı:
str: Birleştirilecek dizeler. NULL dize bağımsız değişkenleri yoksayılır.
Dönüş türü: TEXT
Örnek
SELECT CONCAT_WS(',', 'abcde', 2, NULL, 22);
Sonuç:
concat_ws
----------
abcde,2,22
LISTAGG
Birden çok satırdaki aynı sütunun değerlerini tek bir dizede toplar. Bu, orafce uzantısını gerektiren Oracle uyumlu bir işlevdir. Kurulum talimatları için bkz. Oracle uyumlu işlevler.
Sözdizimi
LISTAGG(<str1> TEXT [, <str2> TEXT])
Parametreler
| Parametre | Zorunlu | Açıklama |
|---|---|---|
str1 |
Evet | Toplanacak sütun veya dize ifadesi. |
str2 |
Hayır | Toplanan değerler arasındaki ayırıcı. Varsayılan: ayırıcı yok. |
Dönüş türü: TEXT
Örnekler
-- Returns: hologres
SELECT LISTAGG(t) FROM (VALUES('holo'), ('gres')) AS l(t);
-- Returns: holo.gres
SELECT LISTAGG(t, '.') FROM (VALUES('holo'), ('gres')) AS l(t);
STRING_AGG
Birden çok satırdaki aynı sütunun değerlerini tek bir dizede toplar.
Sözdizimi
STRING_AGG(expression [order_by_clause]) [FILTER (WHERE filter_clause)]
FILTER yan tümcesi Hologres V1.3 ve sonraki sürümlerde desteklenir. Örneğinizi yükseltmek için bkz. Örnek yükseltme . Destek için Hologres DingTalk grubuna katılın. Talimatlar için bkz. Daha fazla çevrimiçi desteği nasıl alabilirim? .
Parametreler
| Parametre | Zorunlu | Açıklama |
|---|---|---|
expression |
Evet | Toplanacak sütun veya ifade. |
order_by_clause |
Hayır | Birleştirmeden önce değerlerin sıralama düzenini tanımlar. Atlanırsa sıra garanti edilmez. |
FILTER (WHERE filter_clause) |
Hayır | Toplamaya dahil edilen satırları filtreler. |
Dönüş türü: TEXT
Örnekler
Örnek 1: Tüm şehir adlarını tek bir dizede toplayın.
CREATE TABLE city_test (
country text,
city text
);
INSERT INTO city_test
VALUES ('China', 'Shanghai'), ('China', 'Taiwan'), ('Japan', 'Tokyo'), ('France', 'Paris'), ('UK', 'London');
SELECT STRING_AGG(city, ',') FROM city_test;
Sonuç:
string_agg
-------------------------------
Shanghai,Taiwan,Tokyo,Paris,London
Örnek 2: student_id > 2 koşulunu sağlayan adları toplayın.
CREATE TABLE name_text (
student_id int,
name text
);
INSERT INTO name_text
VALUES (1, 'Zhang San'), (2, 'Li Si'), (3, 'Wang Wu'), (4, 'Zhou Liu');
SELECT STRING_AGG(name, ',') FILTER (WHERE student_id > 2) FROM name_text;
Sonuç:
string_agg
-----------
Wang Wu,Zhou Liu
LEFT
Bir dizenin başından belirtilen sayıda karakter ayıklar.
Sözdizimi
LEFT(<str> TEXT, <num> INT)
Parametreler
| Parametre | Zorunlu | Açıklama |
|---|---|---|
str |
Evet | Hedef dize. |
num |
Evet | Ayıklanacak karakter sayısı. Negatif ise son -num karakter hariç tüm karakterleri döndürür. |
Dönüş türü: TEXT
Örnek
SELECT LEFT('hologres', 4);
Sonuç:
left
----
holo
RIGHT
Bir dizenin sonundan belirtilen sayıda karakter ayıklar.
Sözdizimi
RIGHT(<str> TEXT, <num> INT)
Parametreler
| Parametre | Zorunlu | Açıklama |
|---|---|---|
str |
Evet | Hedef dize. |
num |
Evet | Ayıklanacak karakter sayısı. Negatif ise ilk -num karakter hariç tüm karakterleri döndürür. |
Dönüş türü: TEXT
Örnek
SELECT RIGHT('hologres', 4);
Sonuç:
right
-----
gres
SPLIT_PART
Bir dizeyi bir ayırıcıya göre böler ve n. parçayı döndürür.
Sözdizimi
SPLIT_PART(<str> TEXT, <delimiter> TEXT, <num> INT)
Parametreler
| Parametre | Zorunlu | Açıklama |
|---|---|---|
str |
Evet | Bölünecek hedef dize. |
delimiter |
Evet | Bölme için kullanılan ayırıcı. |
num |
Evet | Döndürülecek parçanın 1 tabanlı dizini. |
Dönüş türü: TEXT
Kullanım notları
numparça sayısından büyükse işlev NULL döndürür.
Örnek
CREATE TABLE split_part_test (
a text
);
INSERT INTO split_part_test VALUES ('a/b/c/d/e'), ('a1/b1/c1/d1/e1');
SELECT split_part(a, '/', 2) FROM split_part_test;
Sonuç:
split_part
----------
b
b1
SUBSTRING
Hedef dizeden bir alt dize ayıklar. Konum tabanlı, POSIX düzenli ifadesi ve SQL düzenli ifadesi olmak üzere üç formu destekler.
Sözdizimi
Konum tabanlı:
SUBSTRING(<str> TEXT [FROM <num_start> INT] [FOR <num_end> INT])
POSIX düzenli ifadesi:
SUBSTRING(<str> TEXT FROM <pattern> TEXT)
SQL düzenli ifadesi:
SUBSTRING(<str> TEXT FROM <pattern> TEXT FOR <escape> TEXT)
Parametreler
| Parametre | Zorunlu | Açıklama |
|---|---|---|
str |
Evet | Hedef dize. |
num_start |
Hayır | Başlangıç konumu (1 tabanlı). Varsayılan: 1. |
num_end |
Hayır | Ayıklanacak karakter sayısı. Varsayılan: dizenin sonuna kadar. |
pattern |
Evet (düzenli ifade formları) | Eşleştirilecek düzenli ifade. |
escape |
Evet (SQL düzenli ifadesi) | ., * ve + gibi özel karakterler için kaçış karakteri. |
Dönüş türü: TEXT
Örnekler
Örnek 1: Konuma göre alt dize ayıklayın.
SELECT SUBSTRING('Thomas' FROM 2 FOR 3);
Sonuç:
substring
---------
hom
Örnek 2: POSIX düzenli ifadesiyle eşleşen alt dizeyi ayıklayın.
SELECT SUBSTRING('Thomas' FROM '...$');
Sonuç:
substring
---------
mas
Örnek 3: SQL düzenli ifadesiyle eşleşen alt dizeyi ayıklayın.
SELECT SUBSTRING('Thomas' FROM '%#"o_a#"_' FOR '#');
Sonuç:
substring
---------
oma
SUBSTR
Başlangıç konumundan bir alt dize ayıklar. Bu, orafce uzantısını gerektiren Oracle uyumlu bir işlevdir. Kurulum talimatları için bkz. Oracle uyumlu işlevler.
Sözdizimi
Başlangıç konumundan sona kadar ayıkla:
SUBSTR(<str> TEXT, <num_start> INTEGER)
Sabit uzunlukta alt dize ayıkla:
SUBSTR(<str> TEXT, <num_start> INTEGER, <len> INTEGER)
Parametreler
| Parametre | Zorunlu | Açıklama |
|---|---|---|
str |
Evet | Hedef dize. |
num_start |
Evet | Başlangıç konumu (1 tabanlı). |
len |
Hayır | Ayıklanacak karakter sayısı. Varsayılan: dizenin sonuna kadar. |
Dönüş türü: TEXT
Örnekler
Örnek 1: Dördüncü karakterden sona kadar ayıklayın.
-- Returns: ogres
SELECT SUBSTR('Hologres', 4);
Örnek 2: İkinci karakterden başlayarak beş karakter ayıklayın.
-- Returns: ologr
SELECT SUBSTR('Hologres', 2, 5);
REGEXP_MATCH
Bir dizeyi düzenli ifadeyle eşleştirir ve eşleşmeleri bir dizi olarak döndürür.
Sözdizimi
REGEXP_MATCH(<str> TEXT, <pattern> TEXT)
Parametreler
| Parametre | Zorunlu | Açıklama |
|---|---|---|
str |
Evet | Eşleştirilecek dize. |
pattern |
Evet | Düzenli ifade. |
Dönüş türü: ARRAY
Örnek
SELECT regexp_match('foobarbequebaz', '(bar)(beque)');
Sonuç:
regexp_match
------------
{bar,beque}
REGEXP_SPLIT_TO_TABLE
Bir dizeyi düzenli ifade kullanarak böler ve her parçayı ayrı bir satır olarak döndürür. Sınırlarla ayrılmış değerleri satırlara genişletmek için bu işlevi kullanın.
Sözdizimi
REGEXP_SPLIT_TO_TABLE(<str> TEXT, <pattern> TEXT)
Parametreler
| Parametre | Zorunlu | Açıklama |
|---|---|---|
str |
Evet | Bölünecek dize. |
pattern |
Evet | Bölme konumlarını belirleyen düzenli ifade. |
Dönüş türü: TEXT (parça başına bir satır)
Örnek
CREATE TABLE interests_test (
name text,
intrests text
);
INSERT INTO interests_test
VALUES ('Zhang San', 'singing,dancing'), ('Li Si', 'soccer,running,drawing'), ('Wang Wu', 'flower arranging,calligraphy,playing piano,sleeping');
SELECT name, REGEXP_SPLIT_TO_TABLE(intrests, ',') FROM interests_test;
Sonuç:
name | regexp_split_to_table
----------+----------------------
Zhang San | singing
Zhang San | dancing
Li Si | soccer
Li Si | running
Li Si | drawing
Wang Wu | flower arranging
Wang Wu | calligraphy
Wang Wu | playing piano
Wang Wu | sleeping
REGEXP_SPLIT_TO_ARRAY
Bir dizeyi düzenli ifade kullanarak böler ve parçaları bir dizi olarak döndürür.
Sözdizimi
REGEXP_SPLIT_TO_ARRAY(<str> TEXT, <pattern> TEXT)
Parametreler
| Parametre | Zorunlu | Açıklama |
|---|---|---|
str |
Evet | Bölünecek dize. |
pattern |
Evet | Bölme konumlarını belirleyen düzenli ifade. |
Dönüş türü: ARRAY
Örnek
CREATE TABLE interests_test (
name text,
intrests text
);
INSERT INTO interests_test
VALUES ('Zhang San', 'singing,dancing'), ('Li Si', 'soccer,running,drawing'), ('Wang Wu', 'flower arranging,calligraphy,playing piano,sleeping');
SELECT name, REGEXP_SPLIT_TO_ARRAY(intrests, ',') FROM interests_test;
Sonuç:
name | regexp_split_to_array
----------+----------------------------------------------------------
Zhang San | {singing,dancing}
Li Si | {soccer,running,drawing}
Wang Wu | {"flower arranging",calligraphy,"playing piano",sleeping}
TRIM
Belirtilen karakterleri bir dizenin bir veya her iki ucundan kaldırır.
Sözdizimi
TRIM([LEADING | TRAILING | BOTH] [<characters> TEXT] FROM <string> TEXT)
Parametreler
| Parametre | Zorunlu | Açıklama |
|---|---|---|
LEADING | TRAILING | BOTH |
Hayır | Kırpılacak uç(lar). Varsayılan: BOTH. |
characters |
Hayır | Kaldırılacak karakter kümesi. Her karakter bir bütün dize olarak değil, tek tek eşleştirilir. Varsayılan: boşluk. |
string |
Evet | Hedef dize. |
Dönüş türü: TEXT
Örnek
-- Returns: Tom
SELECT TRIM(BOTH 'xyz' FROM 'yxTomxx');
BTRIM
Belirtilen karakterleri bir dizenin her iki ucundan kaldırır.
Sözdizimi
BTRIM(<str> TEXT [, <characters> TEXT])
Parametreler
| Parametre | Zorunlu | Açıklama |
|---|---|---|
str |
Evet | Hedef dize. |
characters |
Hayır | Her iki uçtan kaldırılacak karakter kümesi. Her karakter bir bütün dize olarak değil, tek tek eşleştirilir. Varsayılan: boşluk. |
Dönüş türü: TEXT
Örnek
-- Returns: trim
SELECT BTRIM('xyxtrimyyx', 'xyz');
LTRIM
Belirtilen karakterleri bir dizenin solundan (başından) kaldırır.
Sözdizimi
LTRIM(<str> TEXT [, <characters> TEXT])
Parametreler
| Parametre | Zorunlu | Açıklama |
|---|---|---|
str |
Evet | Hedef dize. |
characters |
Hayır | Soldan kaldırılacak karakter kümesi. Her karakter bir bütün dize olarak değil, tek tek eşleştirilir. Varsayılan: boşluk. |
Dönüş türü: TEXT
Örnek
-- Returns: test
SELECT LTRIM('zzzytest', 'xyz');
RTRIM
Belirtilen karakterleri bir dizenin sağından (sonundan) kaldırır.
Sözdizimi
RTRIM(<str> TEXT [, <characters> TEXT])
Parametreler
| Parametre | Zorunlu | Açıklama |
|---|---|---|
str |
Evet | Hedef dize. |
characters |
Hayır | Sağdan kaldırılacak karakter kümesi. Her karakter bir bütün dize olarak değil, tek tek eşleştirilir. Varsayılan: boşluk. |
Dönüş türü: TEXT
Örnek
-- Returns: test
SELECT RTRIM('testxxzx', 'xyz');
Bir DECIMAL değeri TEXT türüne dönüştürüldüğünde sonuç, ölçeği tarafından tanımlanan sondaki sıfırları korur; örneğin 2 yerine 2.00 döner. Yalnızca sıfırları kaldıran tek bir RTRIM çağrısı ondalık noktayı geride bırakır:
-- Returns: 2.
SELECT RTRIM(2.00::DECIMAL::TEXT, '0');
Sondaki sıfırları ve ondalık noktayı birlikte kaldırmak için iki RTRIM çağrısını iç içe kullanın: ilk çağrı sıfırları, ikinci çağrı ondalık noktayı kaldırır.
-- Returns: 2
SELECT RTRIM(RTRIM(2.00::DECIMAL::TEXT, '0'), '.');
Aşağıdaki tabloda, a adlı DECIMAL(10,2) sütunundaki farklı değerler için iki ifadenin sonuçları karşılaştırılmaktadır:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LPAD
Bir dizeyi belirtilen toplam uzunluğa kadar bir doldurma karakteriyle soldan doldurur.
Sözdizimi
LPAD(<str> TEXT, <length> INT [, <fill> TEXT])
Parametreler
| Parametre | Zorunlu | Açıklama |
|---|---|---|
str |
Evet | Hedef dize. |
length |
Evet | Sonucun toplam uzunluğu. str length değerinden uzunsa dize belirtilen uzunluğa sağdan kısaltılır. |
fill |
Hayır | Doldurma karakteri. Varsayılan: boşluk. |
Dönüş türü: TEXT
Örnek
-- Returns: xyxhi
SELECT LPAD('hi', 5, 'xy');
RPAD
Bir dizeyi belirtilen toplam uzunluğa kadar bir doldurma karakteriyle sağdan doldurur.
Sözdizimi
RPAD(<str> TEXT, <length> INT [, <fill> TEXT])
Parametreler
| Parametre | Zorunlu | Açıklama |
|---|---|---|
str |
Evet | Hedef dize. |
length |
Evet | Sonucun toplam uzunluğu. str length değerinden uzunsa dize belirtilen uzunluğa sağdan kısaltılır. |
fill |
Hayır | Doldurma karakteri. Varsayılan: boşluk. |
Dönüş türü: TEXT
Örnek
-- Returns: hixyx
SELECT RPAD('hi', 5, 'xy');
Diğer dize işlevleri
ASCII
Bir dizenin ilk karakterinin ASCII kodunu döndürür.
Sözdizimi
ASCII(<str> TEXT)
Dönüş türü: INTEGER
Örnek
-- Returns: 120
SELECT ASCII('x');
CHAR_LENGTH
Bir dizedeki karakter sayısını döndürür. LENGTH ile eşdeğerdir.
Sözdizimi
CHAR_LENGTH(<str> TEXT)
Dönüş türü: INTEGER
Örnek
-- Returns: 4
SELECT CHAR_LENGTH('jose');
LENGTH
Bir dizedeki karakter sayısını döndürür. UTF-8 kodlamasında her Çince karakter, rakam veya harf bir karakter olarak sayılır. CHAR_LENGTH ile eşdeğerdir.
Sözdizimi
LENGTH(<str> TEXT)
Dönüş türü: INTEGER
Örnek
-- Returns: 4
SELECT LENGTH('jose');
CHR
Belirtilen ASCII veya Unicode kod değerine karşılık gelen karakteri döndürür.
Sözdizimi
CHR(<num> INT)
Dönüş türü: TEXT
Örnek
-- Returns: A
SELECT CHR(65);
INITCAP
Her kelimenin ilk harfini büyük, geri kalanını küçük harfe çevirir. Kelimeler, alfasayısal olmayan karakterlerle ayrılan alfasayısal karakter dizileridir.
Sözdizimi
INITCAP(<str> TEXT)
Dönüş türü: TEXT
Örnek
-- Returns: Hi Thomas
SELECT INITCAP('hi THOMAS');
LOWER
Bir dizeyi küçük harfe çevirir.
Sözdizimi
LOWER(<str> TEXT)
Dönüş türü: TEXT
Örnek
-- Returns: tom
SELECT LOWER('TOM');
UPPER
Bir dizeyi büyük harfe çevirir.
Sözdizimi
UPPER(<str> TEXT)
Dönüş türü: TEXT
Örnek
-- Returns: TOM
SELECT UPPER('tom');
OCTET_LENGTH
Bir dizedeki bayt sayısını döndürür.
Sözdizimi
OCTET_LENGTH(<str> TEXT)
Dönüş türü: INTEGER
Örnek
-- Returns: 4
SELECT OCTET_LENGTH('jose');
MD5
Bir dizenin MD5 karmasını hesaplar ve sonucu onaltılık dize olarak döndürür.
Sözdizimi
MD5(<str> TEXT)
Dönüş türü: TEXT
Örnek
-- Returns: 900150983cd24fb0d6963f7d28e17f72
SELECT MD5('abc');
POSITION
Bir alt dizenin bir dize içindeki başlangıç konumunu döndürür. Alt dize bulunamazsa 0 döndürür. STRPOS ile eşdeğerdir.
Sözdizimi
POSITION(<substr> TEXT IN <str> TEXT)
Parametreler
| Parametre | Zorunlu | Açıklama |
|---|---|---|
substr |
Evet | Aranacak alt dize. |
str |
Evet | Hedef dize. |
Dönüş türü: INTEGER
Örnek
-- Returns: 3
SELECT POSITION('om' IN 'Thomas');
STRPOS
Bir alt dizenin bir dize içindeki başlangıç konumunu döndürür. Alt dize bulunamazsa 0 döndürür. POSITION ile eşdeğerdir.
Sözdizimi
STRPOS(<str> TEXT, <substr> TEXT)
Parametreler
| Parametre | Zorunlu | Açıklama |
|---|---|---|
str |
Evet | Hedef dize. |
substr |
Evet | Aranacak alt dize. |
Dönüş türü: INTEGER
Örnek
-- Returns: 2
SELECT STRPOS('high', 'ig');
INSTR
Bir alt dizenin hedef dize içindeki konumunu isteğe bağlı başlangıç konumu ve oluşum kontrolüyle döndürür. Alt dize bulunamazsa 0 döndürür. Bu, orafce uzantısını gerektiren Oracle uyumlu bir işlevdir. Kurulum talimatları için bkz. Oracle uyumlu işlevler.
Sözdizimi
INSTR(<str> TEXT, <patt> TEXT [, <start> INTEGER [, <nth> INTEGER]])
Parametreler
| Parametre | Zorunlu | Açıklama |
|---|---|---|
str |
Evet | Hedef dize. |
patt |
Evet | Aranacak alt dize. |
start |
Hayır | Aramanın başlatılacağı konum. Varsayılan: 1 (dizenin başı). |
nth |
Hayır | Bulunacak oluşum sırası. Varsayılan: 1 (ilk oluşum). |
Dönüş türü: INTEGER
Örnekler
-- Returns: 4 (second occurrence of 'o', searching from position 1)
SELECT INSTR('Hologres', 'o', 1, 2);
-- Returns: 2 (first occurrence of 'o', searching from position 1)
SELECT INSTR('Hologres', 'o', 1, 1);
-- Returns: 4 (first occurrence of 'o' at or after position 4)
SELECT INSTR('Hologres', 'o', 4);
-- Returns: 2 (first occurrence of 'o')
SELECT INSTR('Hologres', 'o');
REPLACE
Bir dize içindeki bir alt dizenin tüm oluşumlarını değiştirir.
Sözdizimi
REPLACE(<str> TEXT, <old_str> TEXT, <new_str> TEXT)
Parametreler
| Parametre | Zorunlu | Açıklama |
|---|---|---|
str |
Evet | Hedef dize. |
old_str |
Evet | Değiştirilecek alt dize. |
new_str |
Evet | Yerine konacak dize. |
Dönüş türü: TEXT
Örnek
CREATE TABLE animal_test (
animal text,
color text
);
INSERT INTO animal_test
VALUES ('dog', 'white'), ('cat', 'white'), ('tiger', 'yellow');
SELECT animal, REPLACE(color, 'white', 'multi-colored') FROM animal_test;
Sonuç:
animal | replace
-------+--------------
dog | multi-colored
cat | multi-colored
tiger | yellow
REGEXP_REPLACE
POSIX düzenli ifadesiyle eşleşen alt dizeleri bir değiştirme dizesiyle değiştirir.
Sözdizimi
REGEXP_REPLACE(<str> TEXT, <regex> TEXT, <replacement> TEXT [, <flags> TEXT])
Parametreler
Zorunlu:
| Parametre | Açıklama |
|---|---|
str |
Hedef dize. |
regex |
Eşleştirilecek POSIX düzenli ifadesi. |
replacement |
Değiştirme dizesi. |
İsteğe bağlı:
flags: Eşleme davranışını kontrol eden bir veya daha fazla karakter. Varsayılan: yalnızca ilk eşleşmeyi değiştirir, büyük/küçük harf duyarlıdır.
| Bayrak | Açıklama |
|---|---|
g |
Tüm oluşumları değiştirir (varsayılan yalnızca ilkini değiştirir). |
i |
Büyük/küçük harf duyarsız eşleme. |
m |
Çok satırlı mod. |
s |
Tek satırlı mod: . yeni satırlarla eşleşir. |
Dönüş türü: TEXT
Örnek
CREATE TABLE a_test (
a text
);
INSERT INTO a_test VALUES ('Abcd1234abCd');
SELECT REGEXP_REPLACE(a, '1234.', '77', 'ig') FROM a_test;
Sonuç:
regexp_replace
--------------
Abcd77bCd
TRANSLATE
Bir karakter eşlemesine dayalı olarak bir dizedeki tekil karakterleri değiştirir.
Sözdizimi
TRANSLATE(<str> TEXT, <substr> TEXT, <newstr> TEXT)
Parametreler
| Parametre | Zorunlu | Açıklama |
|---|---|---|
str |
Evet | Hedef dize. |
substr |
Evet | Değiştirilecek karakter kümesi. |
newstr |
Evet | substr parametresine konumsal olarak eşlenen değiştirme karakterleri. newstr substr parametresinden kısa ise substr içindeki fazla karakterler sonuçtan silinir. |
Dönüş türü: TEXT
Örnek
-- Returns: a2x5
SELECT TRANSLATE('12345', '143', 'ax');
REPEAT
Bir dizeyi belirtilen sayıda tekrarlar.
Sözdizimi
REPEAT(<str> TEXT, <number> INT)
Parametreler
| Parametre | Zorunlu | Açıklama |
|---|---|---|
str |
Evet | Tekrarlanacak dize. |
number |
Evet | Tekrar sayısı. |
Dönüş türü: TEXT
Örnek
-- Returns: PgPgPgPg
SELECT REPEAT('Pg', 4);
STARTS_WITH
Bir dize belirtilen önekle başlıyorsa true döndürür.
Sözdizimi
STARTS_WITH(<str> TEXT, <prefix> TEXT)
Parametreler
| Parametre | Zorunlu | Açıklama |
|---|---|---|
str |
Evet | Hedef dize. |
prefix |
Evet | Kontrol edilecek önek. |
Dönüş türü: BOOLEAN (true için t, false için f)
Örnek
-- Returns: t
SELECT STARTS_WITH('alphabet', 'alph');
PARSE_IDENT
Nitelikli bir SQL tanımlayıcı dizesini ayrıştırır ve bileşenlerini bir dizi olarak döndürür. Tırnaksız bileşenler küçük harfe dönüştürülür; tırnaklı bileşenler büyük/küçük harf durumunu korur.
Sözdizimi
PARSE_IDENT(<quali_iden> TEXT)
Parametreler
| Parametre | Zorunlu | Açıklama |
|---|---|---|
quali_iden |
Evet | Tam nitelikli tablo adı gibi nitelikli bir SQL tanımlayıcısı. |
Dönüş türü: TEXT (dizi biçimi)
Örnek
-- Returns: {"SomeSchema","sometable"}
SELECT PARSE_IDENT('"SomeSchema".someTable');
QUOTE_IDENT
Dizeyi geçerli bir SQL tanımlayıcısı olarak tırnak içine alır; gerekli olduğunda (örneğin dize boşluk içeriyorsa veya aksi takdirde küçük harfe dönüştürülecek büyük harfler varsa) çift tırnak ekler.
Sözdizimi
QUOTE_IDENT(<str> TEXT)
Dönüş türü: TEXT
Örnek
-- Returns: "Foo bar"
SELECT QUOTE_IDENT('Foo bar');
QUOTE_LITERAL
Dizeyi geçerli bir SQL dize sabiti olarak tırnak içine alır ve gerektiğinde tek tırnakları kaçış karakterleriyle işler.
Sözdizimi
QUOTE_LITERAL(<str> TEXT)
Dönüş türü: TEXT
Örnek
-- Returns: 'O''Reilly'
SELECT QUOTE_LITERAL(E'O\'Reilly');
TO_HEX
Bir tamsayıyı onaltılık dize gösterimine dönüştürür.
Sözdizimi
TO_HEX(<number> INT | BIGINT)
Dönüş türü: TEXT
Örnek
-- Returns: 7fffffff
SELECT TO_HEX(2147483647);
TO_NUMBER
Biçimli bir dizeyi bir biçim modeli kullanarak sayısal değere dönüştürür.
Sözdizimi
TO_NUMBER(<str1> TEXT, <str2> TEXT)
Parametreler
| Parametre | Zorunlu | Açıklama |
|---|---|---|
str1 |
Evet | Dönüştürülecek dize. |
str2 |
Evet | Dizenin nasıl ayrıştırılacağını tanımlayan biçim modeli. |
Dönüş türü: NUMERIC
Örnek
-- Returns: -12454.8
SELECT TO_NUMBER('12,454.8-', '99G999D9S');
PLVSTR.RVRS
Bir dizenin tamamını veya bir bölümünü tersine çevirir. Bu, orafce uzantısını gerektiren Oracle uyumlu bir işlevdir. Kurulum talimatları için bkz. Oracle uyumlu işlevler.
Sözdizimi
Tüm dizeyi tersine çevir:
PLVSTR.RVRS(<str> TEXT)
Başlangıç konumundan sona kadar tersine çevir:
PLVSTR.RVRS(<str> TEXT, <start> INTEGER)
Belirtilen aralığı tersine çevir:
PLVSTR.RVRS(<str> TEXT, <start> INTEGER, <end> INTEGER)
Parametreler
| Parametre | Zorunlu | Açıklama |
|---|---|---|
str |
Evet | Hedef dize. |
start |
Hayır | Tersine çevrilecek aralığın başlangıç konumu (1 tabanlı). Varsayılan: 1. |
end |
Hayır | Tersine çevrilecek aralığın bitiş konumu. Varsayılan: dizenin sonu. |
Dönüş türü: TEXT
Örnekler
-- Returns: sergoloH (entire string reversed)
SELECT PLVSTR.RVRS('Hologres');
-- Returns: sergo (reversed from position 4 to end)
SELECT PLVSTR.RVRS('Hologres', 4);
-- Returns: rg (positions 5-6 reversed)
SELECT PLVSTR.RVRS('Hologres', 5, 6);
ROW
Geçerli satırın satır numarasını döndürür. Hologres V1.3 ve sonraki sürümlerde desteklenir.
Örneğinizi V1.3 veya sonraki bir sürüme yükseltmek için bkz. Örnek yükseltme . Destek için Hologres DingTalk grubuna katılın. Talimatlar için bkz. Daha fazla çevrimiçi desteği nasıl alabilirim? .
Sözdizimi
ROW(<val1>, <val2>, ...)
Dönüş türü: ARRAY veya TEXT
Örnek
Aşağıdaki örnek, a sütunu ile b sütununun eşit değerlere sahip olduğu satırları döndürür.
CREATE TABLE row_test (
a text,
b text
);
INSERT INTO row_test VALUES ('0', '0'), ('1', '0');
SELECT a, b FROM row_test WHERE ROW(a, b) = ROW(b, a);
Sonuç:
a | b
--+--
0 | 0