MaxCompute, tablolardaki dize verilerini kırpma, birleştirme, dönüştürme, karşılaştırma ve arama için dize işlevleri sağlar.
MaxCompute SQL aşağıdaki dize işlevlerini destekler.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Kullanım notları
MaxCompute V2.0 ek işlevler sağlar. Kullandığınız işlevler MaxCompute V2.0 veri türü sürümünde desteklenen yeni veri türlerini içeriyorsa, MaxCompute V2.0 veri türü sürümünü etkinleştirmek için SET ifadesini çalıştırmanız gerekir. Yeni veri türleri arasında TINYINT, SMALLINT, INT, FLOAT, VARCHAR, TIMESTAMP ve BINARY bulunur.
Oturum düzeyi: MaxCompute V2.0 veri türü sürümünü kullanmak için, çalıştırmak istediğiniz SQL ifadesinden önce
set odps.sql.type.system.odps2=true;eklemeli ve bunları birlikte gönderip çalıştırmalısınız.-
Proje düzeyi: Proje sahibi, proje gereksinimlerine bağlı olarak proje için MaxCompute V2.0 veri türü sürümünü etkinleştirebilir. Yapılandırma 10 ila 15 dakika sonra etkili olur. Proje düzeyinde MaxCompute V2.0 veri türü sürümünü etkinleştirmek için aşağıdaki komutu çalıştırın:
setproject odps.sql.type.system.odps2=true;setprojecthakkında daha fazla bilgi için bkz. Proje işlemleri. Proje düzeyinde MaxCompute V2.0 veri türü sürümünü etkinleştirirken almanız gereken önlemler hakkında daha fazla bilgi için bkz. Veri türü sürüm kılavuzu.
Sınırlamalar
Aşağıdaki işlevler yalnızca İngilizce karakterleri destekler:
TRIM/RTRIM/LTRIM: trimChars parametresi yalnızca İngilizce karakterleri destekler.
REVERSE: Hive modunda yalnızca İngilizce karakterleri destekler.
SOUNDEX: Yalnızca İngilizce karakterleri dönüştürür.
TOLOWER: Bir dizedeki İngilizce büyük harfleri küçük harfe dönüştürür.
TOUPPER: Bir dizedeki İngilizce küçük harfleri büyük harfe dönüştürür.
INITCAP: Her kelimenin ilk İngilizce harfini büyük harfe, geri kalanını küçük harfe dönüştürür.
ASCII
-
Sözdizimi
bigint ascii(string <str>) -
Açıklama
str dizesindeki ilk karakterin ASCII kodunu döndürür.
-
Parametreler
str: gerekli. STRING türü. Giriş BIGINT, DOUBLE, DECIMAL veya DATETIME türündeyse, hesaplamadan önce örtük olarak STRING türüne dönüştürülür.
-
Dönüş değeri
BIGINT türünde bir değer döndürür. Dönüş değeri şu kuralları izler:
str STRING, BIGINT, DOUBLE, DECIMAL veya DATETIME türünde değilse hata döndürülür.
str NULL ise NULL döndürülür.
-
Örnekler
-
Örnek 1:
abcdedizesindeki ilk karakterin ASCII kodunu döndürün. Örnek ifade:-- Returns 97. select ascii('abcde'); -
Örnek 2: Giriş parametresi NULL'dur. Örnek ifade:
-- Returns NULL. select ascii(null);
-
CHAR_MATCHCOUNT
-
Sözdizimi
bigint char_matchcount(string <str1>, string <str2>) -
Açıklama
str1 içindeki kaç karakterin str2 içinde göründüğünü hesaplar.
-
Parametreler
str1 ve str2: gerekli. STRING türü. Her iki dize de geçerli UTF-8 dizeleri olmalıdır. Karşılaştırma sırasında geçersiz karakterler (Unicode kodlamalı olmayan) bulunursa negatif bir değer döndürülür.
-
Dönüş değeri
BIGINT türünde bir değer döndürür. str1 veya str2 NULL ise NULL döndürülür.
-
Örnekler
-
Örnek 1:
aabcdizesindeki kaç karakterinabcdeiçinde göründüğünü hesaplayın. Örnek ifade:-- Returns 4. select char_matchcount('aabc','abcde'); -
Örnek 2: Bir giriş parametresi NULL'dur. Örnek ifade:
-- Returns NULL. select char_matchcount(null,'abcde');
-
CHR
-
Sözdizimi
string chr(bigint <ascii>) -
Açıklama
Belirtilen bir ASCII kodunu karaktere dönüştürür.
-
Parametreler
ascii: gerekli. BIGINT türü ASCII değeri. Geçerli değerler: 0 ila 127. Giriş STRING, DOUBLE veya DECIMAL türündeyse, hesaplamadan önce örtük olarak BIGINT türüne dönüştürülür.
-
Dönüş değeri
STRING türünde bir değer döndürür. Dönüş değeri şu kuralları izler:
ascii değeri geçerli aralığın dışındaysa hata döndürülür.
ascii BIGINT, STRING, DOUBLE veya DECIMAL türünde değilse hata döndürülür.
ascii NULL ise NULL döndürülür.
-
Örnekler
-
Örnek 1:
100ASCII kodunu karaktere dönüştürün. Örnek ifade:-- Returns d. select chr(100); -
Örnek 2: Giriş parametresi NULL'dur. Örnek ifade:
-- Returns NULL. select chr(null); -
Örnek 3: Giriş STRING türünde bir karakterdir. Örnek ifade:
--The input is implicitly converted to the BIGINT type for the operation, which returns 'd'. select chr('100');
-
CONCAT
-
Sözdizimi
array<T> concat(array<T> <a>, array<T> <b>[,...]) string concat(string <str1>, string <str2>[,...]) -
Açıklama
Girişler olarak diziler: Birden çok dizinin tüm öğelerini birleştirir ve yeni bir dizi döndürür.
Girişler olarak dizeler: Birden çok dizeyi birleştirir ve yeni bir dize döndürür.
-
Parametreler
a ve b: gerekli. Bu parametreler dizileri belirtir.
Tiçindekiarray<T>dizilerdeki öğelerin veri türünü belirtir. Öğeler herhangi bir veri türünde olabilir. Dizi a içindeki öğeler ile Dizi b içindeki öğeler aynı veri türünde olmalıdır. Null öğeler de işleme dahil edilir.str1 ve str2: gerekli. STRING türünde değerler. Giriş değerleri BIGINT, DOUBLE, DECIMAL veya DATETIME türündeyse, hesaplamadan önce örtük olarak STRING türüne dönüştürülür. Giriş değerleri başka veri türlerindense hata döndürülür.
-
Dönüş değeri
ARRAY türünde bir değer döndürülür. Giriş dizilerinden biri null ise null döndürülür.
STRING türünde bir değer döndürülür. Hiçbir giriş parametresi yapılandırılmamışsa veya bir giriş parametresi null olarak ayarlanmışsa null döndürülür.
-
Örnekler
-
Örnek 1:
array(10, 20)vearray(20, -20)içindeki tüm öğeleri birleştirin. Örnek ifade:-- The return value is [10, 20, 20, -20]. select concat(array(10, 20), array(20, -20)); -
Örnek 2: Giriş dizilerinden biri null öğe içeriyor. Örnek ifade:
-- The return value is [10, null, 20, -20]. select concat(array(10, null), array(20, -20)); -
Örnek 3: Giriş dizilerinden biri null. Örnek ifade:
-- The return value is null. select concat(array(10, 20), null); -
Örnek 4:
aabcveabcdedizelerini birleştirin. Örnek ifade:-- The return value is aabcabcde. select concat('aabc','abcde'); -
Örnek 5: Giriş boş. Örnek ifade:
-- The return value is null. select concat(); -
Örnek 6: Giriş dizelerinden biri null. Örnek ifade:
-- The return value is null. select concat('aabc', 'abcde', null);
-
CONCAT_WS
-
Sözdizimi
string concat_ws(string <separator>, string <str1>, string <str2>[,...]) string concat_ws(string <separator>, array<string> <a>) -
Açıklama
Belirtilen ayırıcıyı kullanarak tüm giriş dizelerini veya dizi öğelerini birleştirerek oluşturulan bir dizeyi döndürür. Bu işlev MaxCompute V2.0'da bir uzantıdır.
-
Parametreler
separator: gerekli. STRING türü ayırıcı.
str1 ve str2: En az iki dize belirtilmelidir. STRING türü. Giriş BIGINT, DECIMAL, DOUBLE veya DATETIME türündeyse, hesaplamadan önce örtük olarak STRING türüne dönüştürülür.
a: gerekli. ARRAY türü. Dizi öğeleri STRING türünde olmalıdır.
-
Dönüş değeri
STRING veya STRUCT türünde bir değer döndürür. Dönüş değeri şu kuralları izler:
str1 veya str2 STRING, BIGINT, DECIMAL, DOUBLE veya DATETIME türünde değilse hata döndürülür.
Hiçbir giriş parametresi sağlanmamışsa veya herhangi bir giriş parametresi NULL ise NULL döndürülür.
-
Örnekler
-
Örnek 1:
namevehanmeimeidizelerini:kullanarak birleştirin. Örnek ifade:-- Returns name:hanmeimei. select concat_ws(':','name','hanmeimei');-
-
Örnek 2: Bir giriş parametresi NULL'dur. Örnek ifade:
-- Returns NULL. select concat_ws(':','avg',null,'34'); -
Örnek 3:
array('name', 'hanmeimei')dizisindeki öğeleri:kullanarak birleştirin. Örnek ifade:-- Returns name:hanmeimei. select concat_ws(':',array('name', 'hanmeimei'));
-
DECODE
-
Sözdizimi
STRING DECODE(BINARY <str>, STRING <charset>) -
Açıklama
str değerini charset tarafından belirtilen biçimi kullanarak kodunu çözer.
-
Parametreler
Parametre
Gerekli
Açıklama
str
Evet
BINARY türü. Kodu çözülecek dize.
charset
Evet
STRING türü. Kodlama biçimi. Geçerli değerler: UTF-8, UTF-16, UTF-16LE, UTF-16BE, ISO-8859-1, US-ASCII.
NotISO-8859-1 ve US-ASCII kodlama biçimleri şu anda yalnızca İngilizce karakterleri destekler, Çince karakterleri desteklemez.
-
Dönüş değeri
STRING döndürür. str veya charset NULL ise NULL döndürülür.
-
Örnekler
-
Örnek 1: English Sample dizesini UTF-8 biçimine göre kodlayın ve kodunu çözün. Örnek ifade:
-- Encode and decode the string.SELECT DECODE(ENCODE("English Sample","UTF-8"), "UTF-8");Şunu döndürür:
+-----+| _c0 |+-----+| English Sample |+-----+ -
Örnek 2: Giriş parametrelerinden birini NULL olarak ayarlayın. Örnek ifade:
SELECT DECODE(ENCODE("English Sample","UTF-8"), NULL);Şunu döndürür:
+-----+| _c0 |+-----+| NULL |+-----+
-
ENCODE
-
Sözdizimi
binary encode(string <str>, string <charset>) -
Açıklama
str değerini charset tarafından belirtilen biçimi kullanarak kodlar.
-
Parametreler
str: gerekli. STRING türü. Yeniden kodlanacak dize.
charset: gerekli. STRING türü. Kodlama biçimi. Geçerli değerler: UTF-8, UTF-16, UTF-16LE, UTF-16BE, ISO-8859-1, US-ASCII.
-
Dönüş değeri
BINARY türü döndürür. str veya charset NULL ise NULL döndürülür.
-
Örnekler
-
Örnek 1:
abcdizesiniUTF-8biçiminde kodlayın. Örnek ifade:-- Returns abc. select encode("abc", "UTF-8"); -
Örnek 2:
abcdizesiniUTF-16BEbiçiminde kodlayın. Örnek ifade:-- Returns =00a=00b=00c. select encode("abc", "UTF-16BE"); -
Örnek 3: Bir giriş parametresi NULL'dur. Örnek ifade:
-- Returns NULL. select encode("abc", null);
-
FIND_IN_SET
-
Sözdizimi
BIGINT FIND_IN_SET(STRING <str1>, STRING <str2>[, STRING <delimiter>]) -
Açıklama
delimiter ile ayrılmış str2 dizesindeki str1 dizesinin konumunu 1'den başlayarak bulur.
-
Parametreler
Parametre
Gerekli
Açıklama
str1
Evet
STRING türü. Aranacak dize.
str2
Evet
STRING türü. delimiter ile ayrılmış dize.
delimiter
Hayır
STRING sabiti. Varsayılan virgüldür (,). Ayırıcı tek bir karakter veya bir dize olabilir. -
Dönüş değeri
BIGINT türü döndürür. Dönüş değeri şu kuralları izler:
str2 str1 içermiyorsa veya str1 delimiter içeriyorsa 0 döndürülür.
str1 veya str2
NULLiseNULLdöndürülür.
-
Örnekler
-
Örnek 1: Virgülle (
,) ayrılmışabc,hello,ab,cdizesindekiabdizesinin konumunu bulun. Örnek ifade:SELECT FIND_IN_SET('ab', 'abc,hello,ab,c') AS pos;Şunu döndürür:
+------------+ | pos | +------------+ | 3 | +------------+ -
Örnek 2: Virgülle (
,) ayrılmışabc,hello,ab,cdizesindekihidizesinin konumunu bulun. Örnek ifade:SELECT FIND_IN_SET('hi', 'abc,hello,ab,c') AS pos;Şunu döndürür:
+------------+ | pos | +------------+ | 0 | +------------+ -
Örnek 3: Alt çizgiyle (
_) ayrılmışabc_hello_ab_cdizesindekiabdizesinin konumunu bulun. Örnek ifade:SELECT FIND_IN_SET('ab', 'abc_hello_ab_c', '_') AS pos;Şunu döndürür:
+------------+ | pos | +------------+ | 3 | +------------+ -
Örnek 4: Giriş parametresi
str1veyastr2NULLdeğerindedir. Örnek ifade:SELECT FIND_IN_SET(null, 'abc,hello,ab,c') AS pos;Şunu döndürür:
+------------+ | pos | +------------+ | NULL | +------------+
-
FORMAT_NUMBER
-
Sözdizimi
STRING FORMAT_NUMBER(DOUBLE|BIGINT|INT|SMALLINT|TINYINT|FLOAT|DECIMAL|STRING <expr1>, INT <expr2>) -
Açıklama
expr1 değerini, expr2 parametresine göre biçimlendirilmiş bir dizeye dönüştürür.
Parametreler
expr1: Gereklidir. FLOAT, DOUBLE veya DECIMAL türünde bir değerdir. Bu parametre, biçimlendirmek istediğiniz ifadeyi belirtir.
expr2: Gereklidir. INT türünde bir değerdir. Geçerli değer aralığı 0 ile 340 arasındadır. Bu parametre, korunacak ondalık basamak sayısını belirtir. Bu parametre,
#,###,###.##gibi bir biçimde de ifade edilebilir. Döndürülen ondalık basamak sayısı bu parametrenin değerine göre değişir.-
Dönüş değeri
STRING türünde bir değer döndürülür. Dönüş değeri aşağıdaki kurallara göre değişir:
expr2değeri 0'dan büyük ve 340'a eşit veya küçükse, belirtilen ondalık basamak sayısına yuvarlanmış bir değer döndürülür.expr2değeri 0 ise, dönüş değeri yalnızca tamsayı kısmını içerir; ondalık nokta veya ondalık kısım içermez.expr2değeri 0'dan küçük veyagreater than 340ise hata döndürülür.expr1 veya expr2 boşsa veya null olarak ayarlandıysa null döndürülür.
-
Örnekler
-
Örnek 1: Bir sayıyı belirtilen şekilde biçimlendirin. Örnek ifadeler:
-- Returns 5.230. SELECT FORMAT_NUMBER(5.230134523424545456,3); -- Returns 12,332.123. SELECT FORMAT_NUMBER(12332.123456, '#,###,###,###.###'); -
Örnek 2: Giriş parametrelerinden biri boş veya NULL'dur. Örnek ifadeler:
-- Returns NULL. SELECT FORMAT_NUMBER('',3); -- Returns NULL. SELECT FORMAT_NUMBER(null,3);
-
FROM_CHARSET
-
Sözdizimi
STRING FROM_CHARSET(binary <source>, string <source_charset>, [string <mode>]) -
Açıklama
FROM_CHARSET, UTF-8 olmayan kodlamalı ikili verileri sonraki hesaplamalar için UTF-8 dizesine dönüştürür.
-
Parametreler
source: Gereklidir. BINARY türünde bir değerdir. Bu parametre, dönüştürmek istediğiniz ikili verileri belirtir.
source_charset: Gereklidir. STRING türünde bir değerdir. Bu parametre, source tarafından belirtilen ikili verilerin orijinal kodlama biçimini belirtir. Geçerli değerler: UTF-8, UTF-16, UTF-16LE, UTF-16BE, ISO-8859-1, US-ASCII, GB2312, GBK ve GB18030.
-
mode: İsteğe bağlıdır. STRING türünde bir değerdir. Bu parametre, FROM_CHARSET işlevi source tarafından belirtilen ikili verileri belirtilen kodlama biçimindeki bir dizeye dönüştürürken bir karakter dönüştürülemediğinde uygulanacak işlem modunu belirtir. Geçerli değerler:
NONE: Hata bildirir. Herhangi bir işlem gerçekleştirilmez. Bu varsayılan değerdir.
TRANSLIT: Karakteri, belirtilen kodlama biçimindeki benzer bir karakterle değiştirir.
IGNORE: Hatayı yok sayar ve komutu çalıştırmaya devam eder.
-
Dönüş değeri
UTF-8 kodlamalı STRING türünde bir değer döndürür. Parametreler NULL veya boş dize olduğunda dönüş değeri şu kuralları izler:
Giriş parametrelerinden herhangi biri NULL ise NULL döndürülür.
Giriş parametrelerinden herhangi biri boş dize ise hata döndürülür.
-
Örnekler
-
Örnek 1: UTF-8 kodlamalı ikili verileri UTF-8 kodlamalı bir dizeye dönüştürün.
SELECT FROM_CHARSET(unhex('e58aa0e6b2b9e9949fe696a4e68bb70a'),'UTF-8', 'TRANSLIT'); -
Örnek 2: GBK kodlamalı ikili verileri UTF-8 kodlamalı bir dizeye dönüştürün.
SELECT FROM_CHARSET(unhex('b9feb9febac3a4ce'), 'GBK'); -
Örnek 3: Giriş parametresi null ise null döndürülür.
SELECT FROM_CHARSET(unhex('b9feb9febac3a4ce'), null);
-
FROM_JSON
-
Sözdizimi
from_json(<jsonStr>, <schema>) -
Açıklama
JSON dizesi jsonStr ve çıkış biçimi schema temel alınarak ARRAY, MAP veya STRUCT türünde veri döndürür.
-
Parametreler
jsonStr: Gereklidir. Girdiğiniz JSON dizesidir.
-
schema: Gereklidir. JSON dizesinin şemasıdır. Bu parametrenin değeri, tablo oluşturma ifadesindekiyle aynı biçimde olmalıdır; örneğin
array<bigint>,map<string, array<string>>veyastruct<a:int, b:double,.NotBir struct içindeki anahtarlar büyük/küçük harfe duyarlıdır. Bir struct'ı
a BIGINT, b DOUBLEbiçiminde de belirtebilirsiniz; bu,STRUCT<a:BIGINT, b:DOUBLE>ile eşdeğerdir.Aşağıdaki tabloda JSON veri türleri ile MaxCompute veri türleri arasındaki eşlemeler açıklanmaktadır.
JSON veri türü
MaxCompute veri türü
OBJECT
STRUCT, MAP ve STRING
ARRAY
ARRAY ve STRING
NUMBER
TINYINT, SMALLINT, INT, BIGINT, FLOAT, DOUBLE, DECIMAL ve STRING
BOOLEAN
BOOLEAN ve STRING
STRING
STRING, CHAR, VARCHAR, BINARY, DATE ve DATETIME
NULL
Tüm türlerNotOBJECT ve ARRAY türündeki JSON dizeleri mümkün olduğunca ayrıştırılır. JSON dizesinin veri türü herhangi bir MaxCompute veri türüyle eşleşmiyorsa JSON dizesi atlanır. Kullanım kolaylığı sağlamak için tüm JSON veri türleri MaxCompute tarafından desteklenen STRING veri türüne dönüştürülebilir. NUMBER türündeki bir JSON dizesini FLOAT, DOUBLE veya DECIMAL türünde bir değere dönüştürürken değerin hassasiyeti garanti edilemez. JSON dizesini önce STRING türüne dönüştürmeniz, ardından elde edilen değeri FLOAT, DOUBLE veya DECIMAL türünde bir değere dönüştürmeniz önerilir.
-
Dönüş değeri
ARRAY, MAP veya STRUCT türünde bir değer döndürülür.
-
Örnekler
-
Örnek 1: Belirli bir JSON dizesini belirli bir veri türünde bir değere dönüştürün. Örnek ifade:
-- The return value is {"a":1,"b":0.8}. select from_json('{"a":1, "b":0.8}', 'a int, b double'); -- The return value is {"time":"26/08/2015"}. select from_json('{"time":"26/08/2015"}', 'time string'); -- The return value is {"a":1,"b":0.8}. select from_json('{"a":1, "b":0.8}', 'a int, b double, c string'); -- The return value is [1,2,3]. select from_json('[1, 2, 3, "a"]', 'array<bigint>'); -- The return value is {"d":"v","a":"1","b":"[1,2,3]","c":"{}"}. select from_json('{"a":1,"b":[1,2,3],"c":{},"d":"v"}', 'map<string, string>'); -
Örnek 2: Bir JSON dizesindeki tüm anahtarları almak için
map_keysvefrom_jsonişlevlerini kullanın. Aynı amaçla JSON_KEYS de kullanabilirsiniz. Örnek ifade:-- The return value is ["a","b"]. select map_keys(from_json('{"a":1,"b":2}','map<string,string>'));
-
GET_JSON_OBJECT
-
Sözdizimi
STRING GET_JSON_OBJECT(JSON|STRING <json>, STRING <json_path>) -- Example: Returns Alice. SELECT GET_JSON_OBJECT(JSON '{"name": "Alice", "age": 30}', '$.name'); -
Açıklama
GET_JSON_OBJECT işlevi, belirtilen JSON yolu json_path temel alınarak bir JSON dizesinden veya JSON veri türünde bir değerden bir dize ayıklar.
-
Kullanım notları
GET_JSON_OBJECTişlevi, JSON yollarında normal ifade sözdizimini desteklemez.Yeni JSON veri türü için kullanılan JSON yolu sözdizimi, orijinal belirtimden farklıdır. Bu durum uyumluluk sorunlarına neden olabilir.
Bir sorgu, aynı JSON verilerini işleyen birden çok GET_JSON_OBJECT işlevi içeriyorsa işlev aynı JSON dizesini tekrar tekrar ayrıştırır. Bu durum performansı olumsuz etkileyebilir ve maliyetleri artırabilir. Bundan kaçınmak için JSON günlük verilerini dönüştürmek amacıyla
GET_JSON_OBJECTişlevini kullanıcı tanımlı tablo değerli bir işlev (UDTF) ile birlikte kullanabilirsiniz.
-
Parametreler
-
json: Gereklidir. İşlemek istediğiniz JSON verileridir. Bu parametre iki giriş türünü destekler: JSON ve STRING.
JSON türü: JSON veri türünde bir değerdir. Değer
{"Key":"Value", "Key":"Value",...}biçiminde olmalıdır; örneğinJSON '{"name": "Alice", "age": 30}'.-
STRING türü: Giriş bir STRING ise aşağıdaki biçim gereksinimlerini karşılamalıdır:
Dize
'{"Key":"Value", "Key":"Value",...}'biçiminde olmalıdır; örneğin'{"name": "Alice", "age": 30}'.Çift tırnak işareti (") iki ters eğik çizgi (\\) ile kaçış karakteri olarak işaretlenmelidir.
Tek tırnak işareti (') bir ters eğik çizgi (\) ile kaçış karakteri olarak işaretlenmelidir.
-
json_path: Gereklidir. Veri ayıklamak için kullanılan JSON yolu ifadesini belirten bir STRING'dir. Yol
$karakteriyle başlamalıdır; örneğin$.aliyun.test[0].demo. Yol ifadesi aşağıdaki karakterleri kullanır:$: Kök düğümü gösterir.-
.veya['']: Alt düğümü gösterir. Bu,$.store.bookgibi JSON nesnelerini ayrıştırmak için kullanılır. Bir JSON anahtarı nokta (.) içeriyorsa bunun yerine['']kullanabilirsiniz.['']kullanılarak veri ayıklama yalnızcaSET odps.sql.udf.getjsonobj.new=true;ifadesini çalıştırdığınızda desteklenir. []:[number]bir dizi alt simgesini gösterir. Alt simge 0'dan başlar.*:[]için bir joker karakterdir. Tüm diziyi döndürür. Yıldız işareti (*) kaçış karakteri olarak işaretlenemez.
-
-
Dönüş değeri
STRING türünde bir değer döndürür. Bu değer, belirtilen yoldan ayıklanan veridir. İşlev dönüş değeri için şu kuralları izler:
json geçerliyse ve json_path mevcutsa ilgili dize döndürülür.
json boşsa veya geçersiz biçime sahipse NULL döndürülür.
json_path
[*]içeriyorsa dönüş değeri dizi biçiminde değildir. Dönüş değerinin统一 bir dizi biçiminde olmasını zorlamak içinSET odps.sql.force.getjsonobj.array.format=true;ifadesini çalıştırabilirsiniz.json_path geçersizse NULL döndürülür.
Dönüş davranışı
-
İşlevin dönüş davranışını aşağıdaki komutla proje düzeyinde veya oturum düzeyinde bayrak ayarlayarak kontrol edebilirsiniz: SET odps.sql.udf.getjsonobj.new=true/false;.
Farklı bayrak ayarlarına karşılık gelen iki dönüş davranışı aşağıdaki gibidir:
ÖnemliSET odps.sql.udf.getjsonobj.new=true;yapılandırmasını kullanmanız önerilir. Bu yapılandırma daha standart bir işlev davranışı sağlar, veri işlemeyi basitleştirir ve performansı artırır. MaxCompute projenizde JSON ayrılmış karakterlerinin kaçış karakteri olarak işaretlenmesi davranışına dayanan mevcut işler varsa özgün davranışı kullanmaya devam etmeniz önerilir. Bu, yeni davranışa doğrulama yapmadan geçiş yaptığınızda oluşabilecek hataları veya doğruluk sorunlarını önler.Parametre Ayarları
SET odps.sql.udf.getjsonobj.new=true;SET odps.sql.udf.getjsonobj.new=false;Dönüş davranışı
Orijinal dizeyi değiştirmeden çıkarır.
JSON ayrılmış karakterleri kaçış karakteri olarak işaretlenmiş şekilde dizeyi çıkarır.
Dönüş değeri, doğrudan ayrıştırılabilen bir JSON dizesidir. Ters eğik çizgileri değiştirmek için
REPLACEveyaREGEXP_REPLACEgibi işlevleri kullanmanıza gerek yoktur.Satır sonları (\n) ve tırnak işaretleri (") gibi JSON ayrılmış karakterleri
'\n've'\"'dizeleri olarak döndürülür.Yinelenen anahtar ayrıştırma
Bir JSON nesnesi yinelenen anahtarlar içerebilir ve bunlar başarıyla ayrıştırılabilir.
-- Returns 1. SELECT GET_JSON_OBJECT('{"a":"1","a":"2"}', '$.a');Bir JSON nesnesi yinelenen anahtarlar içeremez. İçerirse ayrıştırma başarısız olabilir.
-- Returns NULL. SELECT GET_JSON_OBJECT('{"a":"1","a":"2"}', '$.a');Çıkış sıralama düzeni
Çıkış, özgün JSON dizesiyle aynı sırada sıralanır.
-- Returns {"b":"1","a":"2"}. SELECT GET_JSON_OBJECT('{"b":{"b":"1","a":"2"},"a":"2"}', '$.b');Çıkış alfabetik sıraya göre sıralanır.
-- Returns {"a":"2","b":"1"}. SELECT GET_JSON_OBJECT('{"b":{"b":"1","a":"2"},"a":"2"}', '$.b'); Hive uyumluluk modu
SET odps.sql.hive.compatible=true;komutuyla etkinleştirilirseGET_JSON_OBJECTişlevi dönüş değerinde özgün dizeleri korur.21 Ocak 2021 tarihinde veya sonrasında oluşturulan MaxCompute projeleri için
GET_JSON_OBJECTişlevinin varsayılan dönüş davranışı özgün dizeleri korumaktır.21 Ocak 2021 tarihinden önce oluşturulan MaxCompute projeleri için
GET_JSON_OBJECTişlevinin varsayılan dönüş davranışı JSON ayrılmış karakterlerini kaçış karakteri olarak işaretlemektir.-
MaxCompute projenizde
GET_JSON_OBJECTişlevinin hangi davranışı kullandığını belirlemek için aşağıdaki örneği kullanabilirsiniz. Bunun için aşağıdaki komutu çalıştırın:SELECT GET_JSON_OBJECT('{"a":"[\\"1\\"]"}', '$.a'); --The return value if the behavior is to escape JSON reserved characters: [\"1\"] --The return value if the behavior is to preserve original strings: ["1"]Projenizdeki
GET_JSON_OBJECTişlevinin varsayılan dönüş davranışını özgün dizeleri koruyacak şekilde değiştirmek için bir destek talebi gönderebilirsiniz. Bu, her oturum için özelliği oturum düzeyinde ayarlama gereksinimini ortadan kaldırır.
-
Örnekler
JSON giriş parametresi
Örnek 1: JSON verilerinden belirli anahtarlar için değerleri alın
-- Returns 1. SELECT GET_JSON_OBJECT(JSON '{"a":1, "b":2}', '$.a'); -- Returns NULL. SELECT GET_JSON_OBJECT(JSON '{"a":1, "b":2}', '$.c');Geçersiz bir json_path NULL döndürür.
-- Returns NULL. SELECT GET_JSON_OBJECT(JSON '{"a":1, "b":2}', '$invalid_json_path');STRING giriş parametresi
src_json.json JSON nesnesinden bilgileri ayıklayın
-- Prepare the test data. CREATE TABLE IF NOT EXISTS src_json ( json STRING ); INSERT OVERWRITE TABLE src_json VALUES ('{"store": {"fruit":[{"weight":8,"type":"apple"}, {"weight":9,"type":"pear"}], "bicycle":{"price":19.95, "color":"red"}}, "email":"amy@only_for_json_udf_test.net", "owner":"amy"}'); -- Extract the information of the owner field. The return value is amy. SELECT GET_JSON_OBJECT(src_json.json, '$.owner') FROM src_json; -- Optional. Output by preserving the original string. SET odps.sql.udf.getjsonobj.new=true; -- Extract the information of the first array in the store.fruit field. The return value is {"weight":8,"type":"apple"}. SELECT GET_JSON_OBJECT(src_json.json, '$.store.fruit[0]') FROM src_json; -- Extract the information of a non-existent field. The return value is NULL. SELECT GET_JSON_OBJECT(src_json.json, '$.non_exist_key') FROM src_json;JSON dizi verilerinden bilgileri ayıklayın
-- Returns 2222. SELECT GET_JSON_OBJECT('{"array":[["aaaa",1111],["bbbb",2222],["cccc",3333]]}','$.array[1][1]'); -- Output by preserving the original string. SET odps.sql.udf.getjsonobj.new=true; -- Returns ["h0","h1","h2"]. SELECT GET_JSON_OBJECT('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[*]'); -- Output by escaping JSON reserved characters. SET odps.sql.udf.getjsonobj.new=false; -- Returns ["h0","h1","h2"]. SELECT GET_JSON_OBJECT('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[*]'); -- Returns h1. SELECT GET_JSON_OBJECT('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[1]');Anahtarda nokta (.) içeren JSON verilerinden bilgileri ayıklayın
-- Prepare the test data. CREATE TABLE json_test (id STRING, json STRING); -- Insert data where the key contains a period (.). INSERT INTO TABLE json_test (id, json) VALUES ("1", "{ \"China.beijing\": {\"school\": {\"id\":0,\"book\": [{\"title\": \"A\",\"price\": 8.95}, {\"title\": \"B\",\"price\": 10.2}] } } }" ); -- Insert data where the key does not contain a period (.). INSERT INTO TABLE json_test (id, json) VALUES ("2", "{ \"China_beijing\": {\"school\": {\"id\":0,\"book\": [{\"title\": \"A\",\"price\": 8.95}, {\"title\": \"B\",\"price\": 10.2}] } } }" ); -- Use square brackets [''] to parse data that contains a period (.). -- This extracts the 'id' value under 'China.beijing'. The return value is 0. SELECT GET_JSON_OBJECT(json, "$['China.beijing'].school['id']") FROM json_test WHERE id =1; -- For data without special characters, both '.' and [''] are valid and equivalent. -- This extracts the 'id' value under 'China_beijing'. The return value is 0. SELECT GET_JSON_OBJECT(json, "$['China_beijing'].school['id']") FROM json_test WHERE id =2; SELECT GET_JSON_OBJECT(json, "$.China_beijing.school['id']") FROM json_test WHERE id =2;**Nokta (
.) içeren anahtarlar için **['']kullanınSET odps.sql.udf.getjsonobj.new=true; -- Returns 1. SELECT GET_JSON_OBJECT('{"a.1":"1","a":"2"}', '$[\'a.1\']');Boş veya geçersiz JSON girişi
-- Returns NULL. SELECT GET_JSON_OBJECT('','$.array[1][1]'); -- Returns NULL. SELECT GET_JSON_OBJECT('"array":["aaaa",1111],"bbbb":["cccc",3333]','$.array[1][1]');Kaçış karakteri olarak işaretlenmiş JSON dizeleri
SET odps.sql.udf.getjsonobj.new=true; --Returns "1". SELECT GET_JSON_OBJECT('{"a":"\\"1\\"","b":"2"}', '$.a'); --Returns '1'. SELECT GET_JSON_OBJECT('{"a":"\'1\'","b":"2"}', '$.a');Emoji desteği
-- Returns the emoji symbol. SELECT GET_JSON_OBJECT('{"a":"<Emoji symbol>"}', '$.a');Not: DataWorks emoji karakterlerinin doğrudan girilmesini desteklemez. Emoji karakterlerine karşılık gelen kodlanmış dizeleri MaxCompute'e yazmak için Data Integration gibi bir araç kullanabilirsiniz. Ardından bunları işlemek için
GET_JSON_OBJECTişlevini kullanabilirsiniz.
INITCAP
-
Sözdizimi
string initcap(<str>) -
Açıklama
str değerini başlık durumuna dönüştürür; kelimeler boşluklarla ayrılır, her kelimenin ilk harfi büyük, geri kalanı küçük harf olur.
-
Parametreler
str: Gereklidir. STRING türüdür. Giriş dizesi.
-
Dönüş değeri
Her kelimenin ilk harfi büyük, geri kalanı küçük harf olan bir dize döndürür.
-
Örnek
-- Returns Odps Sql. SELECT initcap("oDps sql");
INSTR
-
Sözdizimi
bigint instr(string <str1>, string <str2>[, bigint <start_position>[, bigint <nth_appearance>]]) -
Açıklama
str1 dizesinde str2 alt dizesinin konumunu bulur.
-
Parametreler
str1: Gereklidir. STRING türüdür. Aranacak hedef dizedir. Giriş BIGINT, DOUBLE, DECIMAL veya DATETIME ise örtük olarak STRING'e dönüştürülür. Diğer türler hata döndürür.
str2: Gereklidir. STRING türüdür. Eşleştirilecek alt dizedir. Giriş BIGINT, DOUBLE, DECIMAL veya DATETIME ise örtük olarak STRING'e dönüştürülür. Diğer türler hata döndürür.
start_position: İsteğe bağlıdır. BIGINT türünde bir değerdir. Diğer veri türleri için hata döndürülür. Bu parametre, aramanın başlayacağı str1 içindeki karakter konumunu belirtir. Varsayılan başlangıç konumu ilk karakterdir, yani 1. konumdur. start_position negatif bir değerse arama dizenin sonundan geriye doğru sayılarak başlar; burada son karakter -1 konumundadır, sondan ikinci karakter -2 konumundadır ve bu şekilde devam eder.
nth_appearance: İsteğe bağlıdır. 0'dan büyük olması gereken BIGINT türünde bir değerdir. Bu parametre, str1 içindeki str2 eşleşmesinin nth_appearance kez gerçekleştiği konumu belirtir. nth_appearance başka bir veri türündeyse veya 0'a eşit ya da 0'dan küçükse hata döndürülür.
-
Dönüş değeri
BIGINT türünde bir değer döndürür. Dönüş değeri şu kuralları izler:
str1 str2 içermiyorsa 0 döndürülür.
str2 boşsa her zaman başarıyla eşleşir. Örnek:
select instr('abc','');1 döndürür.str1, str2, start_position veya nth_appearance NULL ise NULL döndürülür.
-
Örnekler
-
Örnek 1:
Tech on the netdizesindeekarakterinin konumunu bulun. Örnek ifade:-- Returns 2. select instr('Tech on the net', 'e'); -
Örnek 2:
Tech on the netdizesindeonalt dizesinin konumunu bulun. Örnek ifade:-- Returns 6. select instr('Tech on the net', 'on'); -
Örnek 3:
Tech on the netdizesinde üçüncü karakterden başlayarakekarakterinin ikinci oluşumunun konumunu bulun. Örnek ifade:-- Returns 14. select instr('Tech on the net', 'e', 3, 2); -
Örnek 4: Giriş parametrelerinden biri NULL'dur. Örnek ifade:
-- Returns NULL. select instr('Tech on the net', null);
-
IS_ENCODING
-
Sözdizimi
boolean is_encoding(string <str>, string <from_encoding>, string <to_encoding>) -
Açıklama
Giriş dizesi str değerinin from_encoding karakter kümesinden to_encoding karakter kümesine dönüştürülebilip dönüştürülemeyeceğini belirler. Ayrıca bozuk metni algılamak için de kullanılır; genellikle from_encoding UTF-8 ve to_encoding GBK olarak ayarlanır.
-
Parametreler
str: Gereklidir. STRING türüdür. Boş dizeler herhangi bir karakter kümesi için geçerli kabul edilir.
from_encoding, to_encoding: Gereklidir. STRING türüdür. Kaynak ve hedef karakter kümeleri.
-
Dönüş değeri
BOOLEAN türünde bir değer döndürür. Dönüş değeri şu kuralları izler:
str başarıyla dönüştürülürse True, aksi takdirde False döndürülür.
str, from_encoding veya to_encoding NULL ise NULL döndürülür.
JSON_TUPLE
-
Sözdizimi
string json_tuple(string <json>, string <key1>, string <key2>,...) -
Açıklama
Girdi olarak verilen anahtar kümesine
(key1,key2,...)dayanarak standart bir JSON dizesinden dizeler çıkarır. -
Parametreler
json: gereklidir. STRING türünde bir değerdir. Bu parametre, standart bir JSON dizesini belirtir.
key: gereklidir. STRING türünde bir değerdir. Bu parametre, JSON dizesindeki bir JSON nesnesinin
path(yol) değerini tanımlar. Değer dolar işareti ($) ile başlayamaz. Aynı anda birden çok anahtar girebilirsiniz. MaxCompute, JSON nesnelerini.veya['']kullanarak ayrıştırır. Bir JSON nesnesindeki bir anahtar nokta(.)içeriyorsa['']kullanabilirsiniz.
-
Dönüş değeri
STRING türünde bir değer döndürür.
Notjson boşsa veya geçersizse null döndürülür.
key boşsa, geçersizse veya JSON dizesinde mevcut değilse null döndürülür.
json geçerliyse ve key mevcutsa ilgili dize döndürülür.
Bu işlev, Çince karakterler içeren JSON verilerini ayrıştırabilir.
Bu işlev, iç içe geçmiş JSON verilerini ayrıştırabilir.
Bu işlev, iç içe geçmiş diziler içeren JSON verilerini ayrıştırabilir.
Ayrıştırma eylemi,
set odps.sql.udf.getjsonobj.new=true;ayarıyla birlikte GET_JSON_OBJECT çalıştırılmasına eşdeğerdir. Bir JSON dizesinden birden çok nesne almak için GET_JSON_OBJECT işlevini birden çok kez çağırmanız gerekir. Sonuç olarak, JSON dizesi birden çok kez ayrıştırılır. JSON_TUPLE işlevi aynı anda birden çok anahtar girmenize olanak tanır ve JSON dizesi yalnızca bir kez ayrıştırılır. JSON_TUPLE, GET_JSON_OBJECT'ten daha verimlidir.JSON_TUPLE, kullanıcı tanımlı tablo değerli bir işlevdir (UDTF). Bir tablodan bazı sütunları seçmek istiyorsanız JSON_TUPLE'ü LATERAL VIEW yan tümcesiyle birlikte kullanın.
KEYVALUE
-
Sözdizimi
keyvalue(string <str>,[string <split1>,string <split2>,] string <key>) keyvalue(string <str>,string <key>) -
Açıklama
str dizesini split1 kullanarak anahtar-değer çiftlerine böler, çiftleri split2 kullanarak ayırır ve key ile eşleşen değeri döndürür.
-
Parametreler
str: gereklidir. STRING türündedir. Bölünecek dizedir.
split1, split2: isteğe bağlıdır. STRING türündedir. Bölme işlemi için sınırlayıcı dizelerdir. Belirtilmezse varsayılan split1 değeri
";"ve split2 değeri":"olur. split1 tarafından bölünen bir alt dize birden fazla split2 içeriyorsa sonuç tanımsızdır.key: gereklidir. STRING türündedir. split1 ve split2 ile bölme işleminden sonra key için değeri döndürür.
-
Dönüş değeri
STRING türünde bir değer döndürür. Dönüş değeri aşağıdaki kurallara uyar:
split1 veya split2 NULL ise NULL döndürülür.
str veya key NULL ise veya eşleşen bir key yoksa NULL döndürülür.
Birden çok anahtar-değer çifti eşleşirse ilk eşleşen key için değer döndürülür.
-
Örnekler
-
Örnek 1:
0:1/;1:2dizesini anahtar-değer çiftlerine bölün ve1anahtarı için değeri döndürün. Örnek ifade:-- Returns 2. select keyvalue('0:1/;1:2', 1);split1 ve split2 parametreleri belirtilmemiştir. split1 varsayılan değeri noktalı virgül (
";") ve split2 varsayılan değeri iki nokta üst üstedir (":").split1 ile bölündükten sonra anahtar-değer çiftleri
0:1/,1:2şeklindedir. split2 ile bölündükten sonra:0 1/ 1 21 anahtarı için 2 değerini döndürür.
-
Örnek 2:
“\;decreaseStore:1\;xcard:1\;isB2C:1\;tf:21910\;cart:1\;shipping:2\;pf:0\;market:shoes\;instPayAmount:0\;”dizesini“\;”split1 ve":"split2 olarak kullanarak bölün, ardındantfanahtarı için değeri döndürün. Örnek ifade:-- Returns 21910. select keyvalue("\;decreaseStore:1\;xcard:1\;isB2C:1\;tf:21910\;cart:1\;shipping:2\;pf:0\;market:shoes\;instPayAmount:0\;","\;",":","tf");"\;decreaseStore:1\;xcard:1\;isB2C:1\;tf:21910\;cart:1\;shipping:2\;pf:0\;market:shoes\;instPayAmount:0\;"dizesini"\;"sınırlayıcısı kullanarak bölmek aşağıdaki anahtar-değer çiftlerini oluşturur.decreaseStore:1,xcard:1,isB2C:1,tf:21910,cart:1,shipping:2,pf:0,market:shoes,instPayAmount:0":"ile bölme sonucu aşağıdaki gibidir.decreaseStore 1 xcard 1 isB2C 1 tf 21910 cart 1 shipping 2 pf 0 market shoes instPayAmount 0tfanahtarı için 21910 değerini döndürür.
-
KEYVALUE_TUPLE
-
Sözdizimi
KEYVALUE_TUPLE(str, split1, split2, key1, key2, ..., keyN) -
Açıklama
str dizesini split1 kullanarak anahtar-değer çiftlerine böler, çiftleri split2 kullanarak ayırır ve birden çok key için değerleri döndürür.
-
Parametreler
str: gereklidir. STRING türündedir. Bölünecek dizedir.
split1, split2: gereklidir. STRING türündedir. Bölme işlemi için sınırlayıcı dizelerdir. split1 tarafından bölünen bir alt dize birden fazla split2 içeriyorsa sonuç tanımsızdır.
key: gereklidir. STRING türündedir. split1 ve split2 ile bölme işleminden sonra key için değeri döndürür.
-
Dönüş değeri
STRING türünde bir değer döndürür. Dönüş değeri aşağıdaki kurallara uyar:
split1 veya split2 NULL ise NULL döndürülür.
str veya key NULL ise veya eşleşen bir key yoksa NULL döndürülür.
-
Örnek
-- Create table create table mf_user ( user_id string, user_info string ); -- Insert data insert into mf_user values('1','age:18;genda:f;address:abc'),('2','age:20;genda:m;address:bcd'); -- Query SELECT user_id, KEYVALUE(user_info,';',':','age') as age, KEYVALUE(user_info,';',':','genda') as genda, KEYVALUE(user_info,';',':','address') as address FROM mf_user; -- Equivalent to KEYVALUE query SELECT user_id, age, genda, address FROM mf_user LATERAL VIEW KEYVALUE_TUPLE(user_info,';', ':','age','genda','address') ui AS age,genda,address;Sonuç aşağıdaki gibidir.
+------------+------------+------------+------------+ | user_id | age | genda | address | +------------+------------+------------+------------+ | 1 | 18 | f | abc | | 2 | 20 | m | bcd | +------------+------------+------------+------------+
LENGTH
-
Sözdizimi
bigint length(string <str>) -
Açıklama
str dizesinin uzunluğunu hesaplar.
-
Parametreler
str: gereklidir. STRING türündedir. Girdi BIGINT, DOUBLE, DECIMAL veya DATETIME ise örtük olarak STRING'e dönüştürülür.
-
Dönüş değeri
BIGINT türünde bir değer döndürür. Dönüş değeri aşağıdaki kurallara uyar:
str STRING, BIGINT, DOUBLE, DECIMAL veya DATETIME değilse hata döndürülür.
str NULL ise NULL döndürülür.
str UTF-8 kodlamalı değilse -1 döndürülür.
-
Örnekler
-
Örnek 1:
Tech on the netdizesinin uzunluğunu hesaplayın. Örnek ifade:-- Returns 15. select length('Tech on the net'); -
Örnek 2: Giriş parametresi NULL'dur. Örnek ifade:
-- Returns NULL. select length(null);
-
LENGTHB
-
Sözdizimi
bigint lengthb(string <str>) -
Açıklama
str dizesinin bayt uzunluğunu hesaplar.
-
Parametreler
str: gereklidir. STRING türündedir. Girdi BIGINT, DOUBLE, DECIMAL veya DATETIME ise örtük olarak STRING'e dönüştürülür.
-
Dönüş değeri
BIGINT türünde bir değer döndürür. Dönüş değeri aşağıdaki kurallara uyar:
str STRING, BIGINT, DOUBLE, DECIMAL veya DATETIME değilse hata döndürülür.
str NULL ise NULL döndürülür.
-
Örnekler
-
Örnek 1:
Tech on the netdizesinin bayt uzunluğunu hesaplayın. Örnek ifade:-- Returns 15. select lengthb('Tech on the net'); -
Örnek 2: Giriş parametresi NULL'dur. Örnek ifade:
-- Returns NULL. select lengthb(null);
-
LOCATE
-
Sözdizimi
bigint locate(string <substr>, string <str>[, bigint <start_pos>]) -
Açıklama
str içindeki substr alt dizesinin konumunu bulur. Başlangıç konumunu (1'den başlayarak) belirtmek için start_pos kullanın.
-
Parametreler
substr: gereklidir. STRING türündedir. Aranacak alt dizedir.
str: gereklidir. STRING türündedir. Aramanın yapılacağı dizedir.
start_pos: isteğe bağlıdır. BIGINT türündedir. Arama için başlangıç konumudur.
-
Dönüş değeri
BIGINT türünde bir değer döndürür. Dönüş değeri aşağıdaki kurallara uyar:
str substr içermiyorsa 0 döndürülür.
str veya substr NULL ise NULL döndürülür.
start_pos NULL ise 0 döndürülür.
-
Örnekler
-
Örnek 1:
abdizesininabchelloabcdizesindeki konumunu bulun. Örnek ifade:-- Returns 1. select locate('ab', 'abchelloabc'); -
Örnek 2:
hidizesininabchelloabcdizesindeki konumunu bulun. Örnek ifade:-- Returns 0. select locate('hi', 'abc,hello,ab,c'); -
Örnek 3: start_pos NULL'dur. Örnek ifade:
-- Returns 0. select locate('ab', 'abhelloabc', null);
-
LPAD
-
Sözdizimi
string lpad(string <str1>, int <length>, string <str2>) -
Açıklama
str1 dizesini length karakter uzunluğuna ulaşana kadar str2 dizesiyle soldan doldurur. Bu işlev, MaxCompute V2.0'daki bir uzantıdır.
-
Parametreler
str1: gereklidir. STRING türündedir. Soldan doldurulacak dizedir.
length: gereklidir. INT türündedir. Soldan doldurma için karakter sayısıdır.
str2: gereklidir. Doldurma dizesidir.
-
Dönüş değeri
STRING türünde bir değer döndürür. Dönüş değeri aşağıdaki kurallara uyar:
length str1 uzunluğundan küçükse str1 dizesinin en soldaki length karakterini döndürür.
length 0 ise boş dize döndürülür.
Giriş parametresi yoksa veya herhangi bir giriş parametresi NULL ise NULL döndürülür.
-
Örnekler
-
Örnek 1:
abcdefghdizesini 10 karakter uzunluğuna getirmek için12dizesini kullanarak soldan doldurun. Örnek komut aşağıdaki gibidir.-- Returns 12abcdefgh. select lpad('abcdefgh', 10, '12'); -
Örnek 2:
abcdefghdizesini 5 karakter uzunluğuna getirmek için12dizesini kullanarak soldan doldurun. Aşağıda örnek bir komut verilmiştir.-- Returns abcde. select lpad('abcdefgh', 5, '12'); -
Örnek 3: length 0'dır. Örnek ifade:
-- Returns empty string. select lpad('abcdefgh' ,0, '12'); -
Örnek 4: Bir giriş parametresi NULL'dur. Örnek ifade:
-- Returns NULL. select lpad(null ,0, '12');
-
LTRIM
-
Sözdizimi
string ltrim(string <str>[, <trimChars>]) string trim(leading [<trimChars>] from <str>) -
Açıklama
str dizesinin sol ucundaki karakterleri kaldırır:
trimChars belirtilmezse varsayılan olarak baştaki boşlukları kaldırır.
trimChars belirtirseniz işlev, trimChars içindeki karakterleri bir küme olarak kabul eder ve str dizesinin sol ucundan yalnızca trimChars kümesindeki karakterlerden oluşan mümkün olan en uzun alt dizeyi kaldırır.
-
Parametreler
str: gereklidir. STRING türündedir. Kırpılacak dizedir. Girdi BIGINT, DECIMAL, DOUBLE veya DATETIME ise örtük olarak STRING'e dönüştürülür.
trimChars: isteğe bağlıdır. STRING türündedir. Kaldırılacak karakterlerdir.
-
Dönüş değeri
STRING türünde bir değer döndürür. Dönüş değeri aşağıdaki kurallara uyar:
str STRING, BIGINT, DOUBLE, DECIMAL veya DATETIME değilse hata döndürülür.
str veya trimChars NULL ise NULL döndürülür.
-
Örnekler
-
Örnek 1:
yxTxyomxxdizesinden baştaki boşlukları kaldırın. Örnek ifadeler:-- Returns yxTxyomxx. select ltrim(' yxTxyomxx '); -- Equivalent to: select trim(leading from ' yxTxyomxx '); -
Örnek 2:
yxTxyomxxdizesindenxykümesinde bulunan tüm baştaki karakterleri kaldırın.-- Returns Txyomxx. Any leading x or y is removed. select ltrim('yxTxyomxx', 'xy'); -- Equivalent to: select trim(leading 'xy' from 'yxTxyomxx'); -
Örnek 3: Giriş parametresi NULL'dur. Örnek ifadeler:
-- Returns NULL. select ltrim(null); select ltrim('yxTxyomxx', null);
-
MASK_HASH
-
Sözdizimi
mask_hash(<expr>) -
Açıklama
Dize ifadesi expr'den hesaplanan bir karma değer döndürür. Aynı karma değerleri, aynı ifade değerlerini gösterir.
-
Parametreler
expr: gereklidir. Karma hesaplama için kullanılan dize ifadesidir. STRING, CHAR, VARCHAR, BINARY türlerini destekler.
-
Dönüş değeri
64 baytlık bir karma değeri döndürür. Dize olmayan ifadeler için
nulldöndürülür (Hive uyumlu). -
Örnek
-- Returns hash for abc select mask_hash("abc"); -- Returns +------------+ | _c0 | +------------+ | ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad | +------------+ -- Returns NULL for non-string input select mask_hash(100); -- Returns +------------+ | _c0 | +------------+ | NULL | +------------+
MD5
-
Sözdizimi
string md5(string <str>) -
Açıklama
str dizesinin MD5 karmasını hesaplar.
-
Parametreler
str: gereklidir. STRING türündedir. Girdi BIGINT, DOUBLE, DECIMAL veya DATETIME ise örtük olarak STRING'e dönüştürülür.
-
Dönüş değeri
STRING türünde bir değer döndürür. Dönüş değeri aşağıdaki kurallara uyar:
str STRING, BIGINT, DOUBLE, DECIMAL veya DATETIME değilse hata döndürülür.
str NULL ise NULL döndürülür.
-
Örnekler
-
Örnek 1:
Tech on the netdizesinin MD5 karmasını hesaplayın. Örnek ifade:-- Returns ddc4c4796880633333d77a60fcda9af6. select md5('Tech on the net'); -
Örnek 2: Giriş parametresi NULL'dur. Örnek ifade:
-- Returns NULL. select md5(null);
-
PARSE_URL
-
Sözdizimi
string parse_url(string <url>, string <part>[, string <key>]) -
Açıklama
url adresini ayrıştırır ve part tarafından belirtilen bilgileri ayıklar.
-
Parametreler
url: gereklidir. STRING türündedir. URL bağlantısıdır. Geçersiz URL'ler hata döndürür.
part: gereklidir. STRING türündedir. Geçerli değerler: HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, USERINFO (büyük/küçük harfe duyarlı değildir).
key: isteğe bağlıdır. part QUERY olduğunda key için değeri döndürür.
-
Dönüş açıklaması
STRING türünde bir değer döndürür. Dönüş değeri aşağıdaki kurallara uyar:
url, part veya key NULL ise NULL döndürülür.
part geçersizse hata döndürülür.
-
Örnek
-- Returns example.com. select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'HOST'); -- Returns /over/there/index.dtb. select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'PATH'); -- Returns animal. select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'QUERY', 'type'); -- Returns nose. select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'REF'); -- Returns file. select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'PROTOCOL'); -- Returns username:password@example.com:8042. select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'AUTHORITY'); -- Returns username:password. select parse_url('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'USERINFO');
PARSE_URL_TUPLE
-
Sözdizimi
string parse_url_tuple(string <url>, string <key1>, string <key2>,...) -
Açıklama
url adresini ayrıştırır ve girdi anahtarları key1, key2 vb. tarafından belirtilen dizeleri ayıklar. PARSE_URL ile benzerdir ancak birden çok anahtarı aynı anda ayıklar ve daha iyi performans sunar.
-
Parametreler
url: gereklidir. STRING türündedir. URL bağlantısıdır. Geçersiz URL'ler hata döndürür.
-
key1, key2: gereklidir. STRING türündedir. Ayıklanacak anahtarlardır. Geçerli değerler:
HOST: Ana bilgisayar adresi (alan adı veya IP).
PATH: Sunucudaki ağ kaynağının yolu.
QUERY: Sorgu dizesi (sorgulanacak içerik).
REF: URL'nin parça tanımlayıcısını, yani
#sembolünden sonraki içeriği belirtir.PROTOCOL: Protokol türü.
AUTHORITY: Sunucu alan adı/IP'si, bağlantı noktası ve kullanıcı kimlik doğrulama bilgileri (kullanıcı adı, parola).
FILE: Yol ve sorgu içeriği (PATH + QUERY).
USERINFO: Kullanıcı kimlik doğrulama bilgileri.
QUERY:<KEY>: Sorgu dizesindeki belirtilen anahtarın değeri.
Büyük/küçük harfe duyarlı değildir. Geçersiz değerler hata döndürür.
-
Dönüş Açıklaması
STRING türünde bir değer döndürür. url veya key NULL ise hata döndürülür.
-
Örnek
file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#noseadresinden her anahtar için dizeleri ayıklayın. Örnek ifade:select parse_url_tuple('file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose', 'HOST', 'PATH', 'QUERY', 'REF', 'PROTOCOL', 'AUTHORITY', 'FILE', 'USERINFO', 'QUERY:type', 'QUERY:name') as (item0, item1, item2, item3, item4, item5, item6, item7, item8, item9);Döndürülen değerler:
+------------+------------+------------+------------+------------+------------+------------+------------+------------+------------+ | item0 | item1 | item2 | item3 | item4 | item5 | item6 | item7 | item8 | item9 | +------------+------------+------------+------------+------------+------------+------------+------------+------------+------------+ | example.com | /over/there/index.dtb | type=animal&name=narwhal | nose | file | username:password@example.com:8042 | /over/there/index.dtb?type=animal&name=narwhal | username:password | animal | narwhal | +------------+------------+------------+------------+------------+------------+------------+------------+------------+------------+
REGEXP_COUNT
-
Sözdizimi
bigint regexp_count(string <source>, string <pattern>[, bigint <start_position>]) -
Açıklama
Belirtilen pattern ile eşleşen ve start_position konumundan başlayan source içindeki alt dizelerin sayısını hesaplar.
-
Parametreler
source: gereklidir. STRING türündedir. Aranacak dizedir. Diğer türler hata döndürür.
pattern: gereklidir. STRING sabiti veya düzenli ifadedir. Eşleştirilecek desendir. Daha fazla regex yönergesi için bkz. RLIKE dize eşleştirme. Boş veya geçersiz pattern hata döndürür.
start_position: isteğe bağlıdır. BIGINT türünde bir sabittir. Bu parametrenin değeri 0'dan büyük olmalıdır. Değer başka bir veri türündeyse veya 0'a eşit ya da 0'dan küçükse hata döndürülür. Bu parametreyi belirtmezseniz varsayılan değer 1 olur. Bu değer, aramanın source dizesinin ilk karakterinden başladığını gösterir.
-
Dönüş değeri
BIGINT türünde bir değer döndürür. Dönüş değeri aşağıdaki kurallara uyar:
Eşleşme bulunamazsa 0 döndürür.
source, pattern veya start_position NULL ise NULL döndürür.
-
Örnekler
-
Örnek 1: Belirtilen konumdan başlayarak
abababciçindeki eşleşen alt dizgeleri sayar. Örnek deyimler:-- Returns 1. select regexp_count('abababc', 'a.c'); -- Returns 2. select regexp_count('abababc', '[[:alpha:]]{2}', 3); -
Örnek 2: Bir giriş parametresi NULL'dur. Örnek deyim:
-- Returns NULL. select regexp_count('abababc', null); -
Örnek 3: JSON dizesi
{"account_id":123456789,"account_name":"allen","location":"hangzhou","bill":100}içindeki:karakterlerinin sayısını hesaplar. Örnek deyim:-- Returns 4. select regexp_count('{"account_id":123456789,"account_name":"allen","location":"hangzhou","bill":100}',':');
-
REGEXP_EXTRACT
-
Sözdizimi
string regexp_extract(string <source>, string <pattern>[, bigint <groupid>])NotHive uyumlu veri türü sürümlerinde
REGEXP_EXTRACTJava regex belirtimini takip eder. 1.0 ve 2.0 veri türü sürümlerinde ise MaxCompute belirtimini takip eder. -
Açıklama
source dizesini pattern kullanarak gruplara böler ve groupid grubundaki dizeyi döndürür.
-
Parametreler
source: gereklidir. STRING türündedir. Bölünecek dizedir.
pattern: gereklidir. STRING sabiti veya düzenli ifadedir. Eşleştirilecek desendir. Daha fazla regex yönergesi için bkz. RLIKE string matching.
groupid: isteğe bağlıdır. BIGINT sabitidir, ≥0 olmalıdır.
NotVeriler UTF-8 formatında saklanır. Çince karakterler [\\x{4e00},\\x{9fa5}] aralığında onaltılık olarak temsil edilebilir.
-
Dönüş değeri
STRING türünde bir değer döndürür. Dönüş değeri aşağıdaki kurallara uyar:
pattern boş bir dize ise veya pattern içinde hiçbir grup belirtilmemişse hata döndürülür.
groupid BIGINT türünde değilse veya 0'dan küçükse hata döndürülür. Bu parametreyi belirtmezseniz varsayılan değer 1 olur; bu, ilk gruptaki alt dizenin döndürüleceği anlamına gelir. groupid 0 olarak ayarlanırsa tüm pattern ile eşleşen alt dize döndürülür.
source, pattern veya groupid NULL ise NULL döndürür.
REGEXP_EXTRACT_ALL
-
Sözdizimi
array<T> regexp_extract_all(string <source>, string <pattern>[,bigint <group_id>]) -
Açıklama
Bir dize içinde düzenli ifade deseniyle eşleşen tüm alt dizgeleri bulur ve bunları bir dizi olarak döndürür.
-
Parametreler
source: gereklidir. STRING türündedir. Analiz edilecek dizedir.
pattern: gereklidir. STRING türündedir. Eşleştirilecek desendir. Bu, bir STRING sabiti veya düzenli ifade olabilir. Daha fazla regex yönergesi için bkz. RLIKE string matching.
group_id: isteğe bağlıdır. Bir BIGINT değeridir. Bu parametre, deseni eşleştirmek için kullanılan grubun kimliğini belirtir. Bu parametrenin değeri
0değerine eşit veya büyük olmalıdır. Bu parametreyi belirtmezseniz deseni eşleştirmek için group_id değeri1olan grup kullanılır. Bu parametreyi0olarak ayarlarsanız pattern bir bütün olarak eşleştirilir.
-
Dönüş değeri
Bir ARRAY değeri döndürülür. group_id belirtirseniz belirtilen group_id için tüm eşleşen sonuçları içeren bir dizi döndürülür. group_id belirtmezseniz group_id
1için tüm eşleşen sonuçları içeren bir dizi döndürülür. -
Örnek
-
group_id belirtmezseniz varsayılan davranış ilk group_id ile eşleşen sonuçları döndürmektir.
SELECT regexp_extract_all('100-200, 300-400', '(\\d+)-(\\d+)');Döndürülen değer:
+------------+ | _c0 | +------------+ | [100,300] | +------------+ -
group_id değerini
2olarak ayarlarsanız ikinci group_id için eşleşen sonuç döndürülür.SELECT regexp_extract_all('100-200, 300-400', '(\\d+)-(\\d+)',2);Sonuç aşağıdaki gibidir.
+------------+ | _c0 | +------------+ | [200,400] | +------------+
-
REGEXP_INSTR
-
Sözdizimi
bigint regexp_instr(string <source>, string <pattern>[,bigint <start_position>[, bigint <occurrence>[, bigint <return_option>]]]) -
Açıklama
source içinde pattern ile eşleşen bir alt dizenin belirtilen occurrence kez oluşumunun başlangıç veya bitiş konumunu start_position konumundan başlayarak döndürür.
-
Parametreler
source: Gereklidir. Kaynak dizedir. Veri türü STRING olmalıdır.
pattern: Gereklidir. Eşleştirilecek desendir. Değer bir STRING sabiti veya düzenli ifade olabilir. Düzenli ifadeler hakkında daha fazla bilgi için bkz. RLIKE string matching. Boş bir pattern hata döndürür.
start_position: İsteğe bağlıdır. Aramanın başladığı konumdur. Değer bir BIGINT sabiti olmalıdır. Varsayılan değer 1'dir.
occurrence: İsteğe bağlıdır. Bulunacak eşleşmenin oluşum sırasıdır. Değer bir BIGINT sabiti olmalıdır. Varsayılan değer 1'dir; bu, ilk eşleşmeyi gösterir.
return_option: İsteğe bağlıdır. Döndürülecek konumdur. Değer bir BIGINT sabiti olmalıdır. Geçerli değerler: 0 başlangıç konumunu, 1 bitiş konumunu belirtir. Varsayılan değer 0'dır. Geçersiz bir değer belirtirseniz hata döndürülür.
-
Dönüş değeri
Dönüş değeri BIGINT türündedir. return_option parametresi, source içinde eşleşen alt dizenin başlangıç mı yoksa bitiş konumunun mu döndürüleceğini belirtir. Dönüş değeri aşağıdaki kurallarla belirlenir:
pattern boşsa hata döndürülür.
start_position veya occurrence değeri bir BIGINT sabiti değilse veya 0'a eşit ya da küçükse hata döndürülür.
source, pattern, start_position, occurrence veya return_option NULL ise NULL döndürülür.
-
Örnekler
-
Örnek 1:
i love www.taobao.comdizesindeo[[:alpha:]]{1}ile eşleşen bir alt dizenin2nci oluşumunun başlangıç konumunu3konumundan başlayarak döndürür. Örnek deyim:-- Returns 14. select regexp_instr('i love www.taobao.com', 'o[[:alpha:]]{1}', 3, 2); -
Örnek 2:
i love www.taobao.comdizesindeo[[:alpha:]]{1}ile eşleşen bir alt dizeninsecondoluşumunun bitiş konumunu döndürür. Aramathirdkarakterden başlar. Örnek deyim:-- Returns 16. select regexp_instr('i love www.taobao.com', 'o[[:alpha:]]{1}', 3, 2, 1); -
Örnek 3: Bir giriş parametresi NULL'dur. Örnek deyim:
-- Returns NULL. select regexp_instr('i love www.taobao.com', null, 3, 2);
-
REGEXP_REPLACE
-
Sözdizimi
string regexp_replace(string <source>, string <pattern>, string <replace_string>[, bigint <occurrence>])NotHive uyumlu veri türleri için
REGEXP_REPLACEişlevi Java düzenli ifade belirtimini takip eder. 1.0 ve 2.0 veri türleri için MaxCompute belirtimini takip eder. -
Açıklama
source dizesinde occurrence tarafından belirtilen konumda pattern ile eşleşen alt dizeyi replace_string ile değiştirir ve sonucu döndürür.
-
Parametreler
source: Gereklidir. STRING türünde bir değerdir. Değiştirilecek kaynak dizedir.
pattern: Gereklidir. Bir STRING sabiti veya düzenli ifadedir. Eşleştirilecek desendir. Düzenli ifade kuralları hakkında daha fazla bilgi için bkz. RLIKE string matching. pattern boşsa hata döndürülür.
-
replace_string: Gereklidir. STRING türünde bir değerdir. pattern ile eşleşen alt dizenin yerine geçen dizedir.
Notreplace_string boş bir dize ise işlev pattern ile eşleşen alt dizeyi siler.
replace_string \\n biçiminde geri başvurular içerebilir; bu, pattern içindeki n. yakalama grubuyla eşleşen alt dizeyi eklemek için kullanılır. n değeri 1 ile 9 arasında bir tamsayı olabilir. \\0, pattern ile eşleşen tüm alt dizeyi ekler. Eğik çizgileri kaçış karakteri olarak kullanmanız gerekir (örneğin \\1) veya R'(\\1)' gibi ham dize kullanabilirsiniz.
occurrence: İsteğe bağlıdır. BIGINT türünde bir sabittir ve 0'a eşit veya büyük olmalıdır. Bu parametrenin değeri, occurrence tarafından belirtilen n. oluşumdaki desenle eşleşen dizenin replace_string ile değiştirileceğini gösterir. Bu parametre 0 olarak ayarlanırsa belirtilen desenle eşleşen tüm alt dizgeler değiştirilir. Başka bir veri türündeyse veya 0'dan küçükse hata döndürülür. Varsayılan değer: 0.
-
Dönüş değeri
STRING türünde bir değer döndürülür. Dönüş değeri aşağıdaki kurallarla belirlenir:
Var olmayan bir gruba başvuru yapılırsa sonuç tanımsızdır.
replace_string NULL ise ve pattern için bir eşleşme bulunursa NULL döndürülür.
replace_string NULL ise ve pattern eşleşmezse işlev orijinal dizeyi döndürür.
source, pattern veya occurrence NULL ise NULL döndürülür.
-
Örnekler
-
Örnek 1: Belirtilen kurallara göre alt dizgeleri değiştirir.
-- Returns Abcd. select regexp_replace("abcd", "a", "A", 0); -- Returns bcd. select regexp_replace("abcd", "a", "", 0); -- Returns 19700101. select regexp_replace("1970-01-01", "-", "", 0); -- Returns abc. select regexp_replace("a1b2c3", "[0-9]", "", 0); -- Returns a1b2c. select regexp_replace("a1b2c3", "[0-9]", "", 3); -
Örnek 2:
123.456.7890dizesindeki([[:digit:]]{3})\\.([[:digit:]]{3})\\.([[:digit:]]{4})deseni için tüm eşleşmeleri(\\1)\\2-\\3ile değiştirir. Örnek deyim:-- Returns (123)456-7890. select regexp_replace('123.456.7890', '([[:digit:]]{3})\\.([[:digit:]]{3})\\.([[:digit:]]{4})', '(\\1)\\2-\\3', 0); -
Örnek 3:
abcddizesindeki bir desenle eşleşen alt dizgeleri belirtilen kurallara göre değiştirir. Örnek deyimler:-- Returns a b c d. select regexp_replace('abcd', '(.)', '\\1 ', 0); -- Returns a bcd. select regexp_replace('abcd', '(.)', '\\1 ', 1); -- Returns d. select regexp_replace("abcd", "(.*)(.)$", "\\2", 0); -
Örnek 4: url_set tablosunda değerleri
www.simple@xxx.comformatında olan bir URL sütunu vardır.xxxkısmı her satır için benzersizdir. Bu örnekwwwsonrasındaki tüm karakterleri değiştirir. Örnek deyim:-- Returns wwwtest. select regexp_replace(url,'(www)(.*)','wwwtest',0) from url_set; -
Örnek 5: Bir giriş parametresi NULL'dur. Örnek deyim:
-- Returns NULL. select regexp_replace('abcd', '(.)', null, 0); -
Örnek 6: Var olmayan bir gruba başvuru yapar. Örnek deyimler:
-- Pattern defines only one group; second group reference doesn't exist. -- Avoid this usage; result is undefined. regexp_replace("abcd", "(.)", "\\2", 0) = "" or "abcd" -- Pattern has no groups; \1 references non-existent group. -- Avoid this usage; result is undefined. regexp_replace("abcd", "a", "\\1", 0) = "bcd" or "abcd"
-
REGEXP_SUBSTR
-
Sözdizimi
string regexp_substr(string <source>, string <pattern>[, bigint <start_position>[, bigint <occurrence>]]) -
Açıklama
source dizesinde start_position konumundan başlayarak pattern ile occurrence kez eşleşen alt dizeyi döndürür.
-
Parametreler
source: Gereklidir. STRING türündedir. Aranacak dizedir.
pattern: Gereklidir. STRING sabiti veya düzenli ifadedir. Eşleştirilecek desendir. Düzenli ifade sözdizimi RLIKE string matching içinde açıklanmıştır.
start_position: İsteğe bağlıdır. BIGINT sabitidir. Değer 0'dan büyük olmalıdır. Bu parametreyi belirtmezseniz varsayılan değer 1 olur; bu, aramanın source dizesinin ilk karakterinden başladığını gösterir.
occurrence: İsteğe bağlıdır. BIGINT sabitidir. Değer 0'dan büyük olmalıdır. Varsayılan değer 1'dir; bu, ilk eşleşmeyi gösterir.
-
Dönüş değeri
Bir STRING döndürür. Dönüş değeri aşağıdaki kurallara uyar:
pattern boşsa hata oluşur.
Eşleşme bulunamazsa NULL döndürür.
start_position veya occurrence BIGINT değilse veya 0'a eşit ya da küçükse hata oluşur.
source, pattern, start_position veya occurrence NULL ise NULL döndürür.
-
Örnekler
-
Örnek 1:
I love aliyun very muchiçinde belirtilen desenle eşleşen alt dizeyi döndürür. Örnek deyim:-- Returns aliyun. select regexp_substr('I love aliyun very much', 'a[[:alpha:]]{5}'); -- Returns have. select regexp_substr('I have 2 apples and 100 bucks!', '[[:blank:]][[:alnum:]]*', 1, 1); -- Returns 2. select regexp_substr('I have 2 apples and 100 bucks!', '[[:blank:]][[:alnum:]]*', 1, 2); -
Örnek 2: Bir giriş parametresi NULL'dur. Örnek deyim:
-- Returns NULL. select regexp_substr('I love aliyun very much', null);
-
REPEAT
-
Sözdizimi
string repeat(string <str>, bigint <n>) -
Açıklama
str dizesini n kez tekrarlayarak döndürür.
-
Parametreler
str: gereklidir. STRING türündedir. Giriş BIGINT, DOUBLE, DECIMAL veya DATETIME ise örtülü olarak STRING'e dönüştürülür.
n: gereklidir. BIGINT türündedir. Değer boyutu 2 MB'ı aşmamalıdır.
-
Dönüş değeri
STRING türünde bir değer döndürür. Dönüş değeri aşağıdaki kurallara uyar:
str STRING, BIGINT, DOUBLE, DECIMAL veya DATETIME türünde değilse hata döndürülür.
n boşsa hata döndürülür.
str veya n NULL ise NULL döndürülür.
-
Örnekler
-
Örnek 1:
abcdizesini5kez tekrarlar. Örnek deyim:-- Returns abcabcabcabcabc. select repeat('abc', 5); -
Örnek 2: Bir giriş parametresi NULL'dur. Örnek deyim:
-- Returns NULL. select repeat('abc', null);
-
REPLACE
-
Sözdizimi
string replace(string <str>, string <old>, string <new>) -
Açıklama
str içindeki old öğelerinin tüm oluşumlarını new ile değiştirir ve değiştirilmiş str değerini döndürür. Eşleşme bulunamazsa orijinal str döndürülür. Bu işlev MaxCompute V2.0 genişletme işlevidir.
-
Parametreler
str: gereklidir. STRING türündedir. Kaynak dizedir.
old: Gereklidir. Karşılaştırılacak dizedir.
new: gereklidir. STRING türündedir. Yerine geçecek dizedir.
-
Dönüş değeri
STRING türünde bir değer döndürür. Herhangi bir giriş parametresi NULL ise NULL döndürülür.
-
Örnekler
-
Örnek 1:
abababdizesindekiababalt dizesinin tüm oluşumlarını12ile değiştirir. Örnek deyim:-- Returns 12ab. select replace('ababab','abab','12'); -
Örnek 2: Giriş parametrelerinden biri NULL'dur. Örnek deyim:
-- Returns NULL. select replace('123abab456ab',null,'abab');
-
REVERSE
-
Sözdizimi
string reverse(string <str>) -
Açıklama
str dizesinin tersini döndürür.
-
Parametreler
str: Gereklidir. STRING türünde bir parametredir. Giriş bir BIGINT, DOUBLE, DECIMAL veya DATETIME değeri ise örtülü olarak STRING türüne dönüştürülür.
-
Dönüş değeri
STRING türünde bir değer döndürür. Aşağıdaki kurallar geçerlidir:
str veri türü STRING, BIGINT, DOUBLE, DECIMAL veya DATETIME değilse hata döndürülür.
str NULL ise NULL döndürülür.
-
Örnekler
-
Örnek 1:
I love aliyun very muchdizesini ters çevirir. Örnek deyim:-- Returns hcum yrev nuyila evol I. select reverse('I love aliyun very much'); -
Örnek 2: Giriş parametresi NULL'dur. Örnek deyim:
-- Returns NULL. select reverse(null);
-
RPAD
-
Sözdizimi
string rpad(string <str1>, int <length>, string <str2>) -
Açıklama
str1 dizesini doldurma dizesi str2 kullanarak length karakter uzunluğuna kadar sağdan doldurur. Bu işlev MaxCompute V2.0'da bir uzantıdır.
-
Parametreler
str1: gereklidir. STRING türündedir. Sağdan doldurulacak dizedir.
length: gereklidir. INT türündedir. 0'a eşit veya büyük olmalıdır. Doldurulmuş sonucun karakter sayısını belirtir.
str2 (gereklidir): Doldurma için kullanılan dizedir.
-
Dönüş değeri
STRING türünde bir değer döndürür. Dönüş değeri aşağıdaki kurallara uyar:
length str1 uzunluğundan küçükse str1 öğesinin en soldaki length karakterini döndürür.
length 0 ise boş dize döndürür.
Giriş parametresi yoksa veya herhangi bir giriş parametresi NULL ise NULL döndürür.
-
Örnekler
-
Örnek 1:
abcdefghdizesini doldurma dizesi12kullanarak 10 karaktere kadar sağdan doldurur. Örnek deyim:-- Returns abcdefgh12. select rpad('abcdefgh', 10, '12'); -
Örnek 2:
abcdefghdizesini doldurma dizesi12kullanarak 5 karaktere kadar sağdan doldurur. Örnek deyim:-- Returns abcde. select rpad('abcdefgh', 5, '12'); -
Örnek 3: length 0'dır. Örnek deyim:
-- Returns empty string. select rpad('abcdefgh' ,0, '12'); -
Örnek 4: Bir giriş parametresi NULL'dur. Örnek deyim:
-- Returns NULL. select rpad(null ,0, '12');
-
RTRIM
-
Sözdizimi
string rtrim(string <str>[, <trimChars>]) string trim(trailing [<trimChars>] from <str>) -
Açıklama
str öğesinin sağ ucundan karakterleri kaldırır:
trimChars belirtilmezse varsayılan olarak boşluklar kırpılır.
trimChars belirtilirse trimChars içindeki karakterler bir küme olarak değerlendirilir. str öğesinin sağ ucundan tamamen trimChars kümesindeki karakterlerden oluşan en uzun alt dize kaldırılır.
-
Parametreler
str: gereklidir. STRING türündedir. Kırpılacak dizedir. Giriş BIGINT, DECIMAL, DOUBLE veya DATETIME ise örtülü olarak STRING'e dönüştürülür.
trimChars: isteğe bağlıdır. STRING türündedir. Kaldırılacak karakterlerdir.
-
Dönüş değeri
STRING türünde bir değer döndürür. Dönüş değeri aşağıdaki kurallara uyar:
str STRING, BIGINT, DOUBLE, DECIMAL veya DATETIME değilse hata döndürülür.
str veya trimChars NULL ise NULL döndürülür.
-
Örnekler
-
Örnek 1:
yxTxyomxxdizesinden sondaki boşlukları kaldırır. Örnek deyimler:-- Returns yxTxyomxx. select rtrim(' yxTxyomxx '); -- Equivalent to: select trim(trailing from ' yxTxyomxx '); -
Örnek 2:
yxTxyomxxdizesindenxykümesine ait olan tüm sondaki karakterleri kaldırır.-- Returns yxTxyom. Any trailing x or y is removed. select rtrim('yxTxyomxx', 'xy'); -- Equivalent to: select trim(trailing 'xy' from 'yxTxyomxx'); -
Örnek 3: Giriş parametresi NULL'dur. Örnek deyimler:
-- Returns NULL. select rtrim(null); select rtrim('yxTxyomxx', null);
-
SOUNDEX
-
Sözdizimi
string soundex(string <str>) -
Açıklama
Standart bir dizeyi SOUNDEX dizesine dönüştürür.
-
Parametreler
str: Gereklidir. Dönüştürülecek dizedir. Bu parametre STRING türündedir. Bu işlev, MaxCompute V2.0 sürümünde bir uzantıdır.
-
Dönüş değeri
Dönüş değeri STRING türündedir. str NULL ise işlev NULL döndürür.
-
Örnekler
-
Örnek 1:
hellodizesini SOUNDEX dizesine dönüştürür. Örnek ifade:-- Returns H400. select soundex('hello'); -
Örnek 2: Giriş parametresi NULL'dur. Örnek ifade:
-- Returns NULL. select soundex(null);
-
SPACE
-
Sözdizimi
string space(bigint <n>) -
Açıklama
n adet boşluk içeren bir dize oluşturur.
-
Parametreler
n: gereklidir. BIGINT türündedir. Değer boyutu 2 MB'yi aşmamalıdır.
-
Dönüş değeri
STRING döndürür. Dönüş değeri aşağıdaki kurallara uyar:
n boşsa hata döndürülür.
n NULL ise NULL döndürülür.
-
Örnek
-- Returns 10. select length(space(10));
SPLIT
-
Sözdizimi
ARRAY<STRING> SPLIT(STRING <source>, STRING <delimiter>[, BOOLEAN <trimTailEmpty>]) -- Standard example. -- Returns ["a","b","c"]. SELECT SPLIT('a,b,c', ','); -
Parametreler
source: Gereklidir. Bölünecek dizedir. Veri türü STRING'dir.
delimiter: Gereklidir. Dizeyi bölmek için kullanılan ayırıcıdır. Bu parametre düzenli ifadeleri destekler. Veri türü STRING'dir.
trimTailEmpty: İsteğe bağlıdır. Sondaki boş dizelerin tutulup tutulmayacağını belirtir. Varsayılan değer
true'dur. Bu parametreyifalseolarak ayarlarsanız sondaki boş dizeler korunur. Veri türü BOOLEAN'dır.
-
Dönüş değeri
ARRAY<STRING> türünde bir değer döndürür.
-
Örnek
-
Örnek 1: Bir dizeyi virgül kullanarak bölün.
-- Returns ["a","b","c"]. SELECT SPLIT('a,b,c', ','); -
Örnek 2: Ayırıcının bulunmadığı durumları işleyin.
-- Returns ["a,b,c"]. SELECT SPLIT('a,b,c', ':'); -
Örnek 3: Ardışık ayırıcıları işleyin. Bu işlem boş bir dize öğesi oluşturur.
-- Returns ["a","","b"]. SELECT SPLIT('a,,b', ','); -
Örnek 4: Çok karakterli bir ayırıcı kullanın.
-- Returns ["a","b","c"]. SELECT SPLIT('a::b::c', '::'); -
Örnek 5: Sondaki boş dizeleri koruyun.
-- By default, trailing empty strings are not returned. -- Returns ["a","b","c"]. SELECT SPLIT('a,b,c,,', ','); -- Return trailing empty strings. -- Returns ["a","b","c","",""]. SELECT SPLIT('a,b,c,,', ',', false); -
Örnek 6: Ayırıcı olarak bir kaçış karakteri veya özel karakter kullanın.
-- Split by a line feed. -- Returns ["hello","world"]. SELECT SPLIT('hello\nworld', '\n'); -- Split by a tab character. -- Returns ["a","b","c"]. SELECT SPLIT('a\tb\tc', '\t'); -- Split by a carriage return. -- Returns ["line1","line2"]. SELECT SPLIT('line1\rline2', '\r'); -- Escape a backslash. -- Returns ["a","b","c"]. SELECT SPLIT('a\\b\\c', '\\\\'); -
Örnek 7: NULL girişleri işleyin.
-- If any parameter is NULL, the function returns NULL. -- Returns NULL. SELECT SPLIT(NULL, ','); -- Returns NULL. SELECT SPLIT('a,b,c', NULL); -- Returns NULL. SELECT SPLIT('a,b,c', ',', NULL);
-
SPLIT_PART
-
Sözdizimi
string split_part(string <str>, string <separator>, bigint <start>[, bigint <end>]) -
Açıklama
str dizesini separator ayırıcısını kullanarak böler ve start ile end (kapalı aralık) arasındaki alt dizeyi döndürür.
-
Parametreler
str: gereklidir. STRING türündedir. Bölünecek dizedir. Giriş BIGINT, DOUBLE, DECIMAL veya DATETIME ise örtük olarak STRING'e dönüştürülür.
separator: gereklidir. STRING sabiti. Ayırıcı (tek karakter veya dize).
start: gereklidir. BIGINT sabiti, 0'dan büyük olmalıdır. Başlangıç bölüm numarası (1'den başlayarak sayılır).
end: start değerinden büyük veya ona eşit bir BIGINT sabiti. Bu parametre, döndürülecek bitiş segment numarasını belirtir. Bu parametre belirtilmezse değeri varsayılan olarak start değerini alır ve yalnızca start tarafından belirtilen segment döndürülür.
-
Dönüş Değeri Açıklaması
STRING döndürür. Dönüş değeri aşağıdaki kurallara uyar:
start gerçek bölüm sayısını aşarsa (örneğin, 6 bölüm var ancak start > 6) boş dize döndürülür.
separator str içinde bulunamazsa ve start = 1 ise tüm str döndürülür. str boşsa boş dize döndürülür.
separator boşsa orijinal str döndürülür.
end bölüm sayısını aşarsa start ile son bölüm arasındaki alt dize döndürülür.
str STRING, BIGINT, DOUBLE, DECIMAL veya DATETIME türünde değilse hata döndürülür.
separator bir STRING sabiti değilse hata döndürülür.
start veya end bir BIGINT sabiti değilse hata döndürülür.
separator dışındaki herhangi bir parametre NULL ise NULL döndürülür.
-
Örnekler
-
Örnek 1:
a,b,c,ddizesini,ayırıcısını kullanarak bölün ve belirtilen bölümleri döndürün. Örnek ifadeler:-- Returns a. select split_part('a,b,c,d', ',', 1); -- Returns a,b. select split_part('a,b,c,d', ',', 1, 2); -
Örnek 2: start gerçek bölüm sayısını aşıyor. Örnek ifade:
-- Returns empty string. select split_part('a,b,c,d', ',', 10); -
Örnek 3: separator str içinde bulunamadı. Örnek ifadeler:
-- Returns a,b,c,d. select split_part('a,b,c,d', ':', 1); -- Returns empty string. select split_part('a,b,c,d', ':', 2); -
Örnek 4: separator boş. Örnek ifade:
-- Returns a,b,c,d. select split_part('a,b,c,d', '', 1); -
Örnek 5: end gerçek bölüm sayısını aşıyor. Örnek ifade:
-- Returns b,c,d. select split_part('a,b,c,d', ',', 2, 6); -
Örnek 6: separator dışındaki herhangi bir giriş parametresi NULL. Örnek ifade:
-- Returns NULL. select split_part('a,b,c,d', ',', null);
-
SUBSTR
-
Sözdizimi
string substr(string <str>, bigint <start_position>[, bigint <length>]) -
Açıklama
str dizesinin start_position konumundan başlayan ve uzunluğu length olan bir alt dizesini döndürür.
-
Parametreler
str: gereklidir. STRING türündedir. Giriş BIGINT, DECIMAL, DOUBLE veya DATETIME ise örtük olarak STRING'e dönüştürülür.
-
start_position: gereklidir. BIGINT türündedir. Varsayılan başlangıç konumu 1'dir.
Hive uyumlu veri türü sürümü: start_position=0 ise 1. konumla aynı davranır.
1.0 ve 2.0 veri türü sürümleri: start_position=0 ise NULL döndürür.
-
length: isteğe bağlı. BIGINT türündedir. Alt dize uzunluğu >0 olmalıdır.
Önemlisetproject odps.function.strictmode=falseise: length<0 durumu boşluk döndürür.setproject odps.function.strictmode=trueise: length<0 durumu hata döndürür.
-
Dönüş değeri
STRING türü döndürür. Dönüş değeri aşağıdaki kurallara uyar:
str STRING, BIGINT, DECIMAL, DOUBLE veya DATETIME değilse hata döndürür.
length BIGINT değilse veya ≤0 ise hata döndürür.
length parametresini atlarsanız alt dize str sonuna kadar uzatılır.
str, start_position veya length NULL ise NULL döndürür.
-
Örnekler
-
Örnek 1: Belirtilen konumdan ve belirtilen uzunlukta
abcdizesinin bir alt dizesini döndürün. Örnek ifadeler:-- Returns bc. select substr('abc', 2); -- Returns b. select substr('abc', 2, 1); -- Returns bc. select substr('abc',-2 , 2); -
Örnek 2: Bir giriş parametresi NULL olduğunda. Örnek ifade:
-- Returns NULL. select substr('abc', null);
-
SUBSTRING
-
Sözdizimi
string substring(string|binary <str>, int <start_position>[, int <length>]) -
Açıklama
str dizesinin start_position konumundan başlayan ve uzunluğu length olan bir alt dizesini döndürür.
-
Parametreler
str: gereklidir. Bu parametre STRING veya BINARY türündedir.
start_position: gereklidir. Bu parametre INT türündedir. Başlangıç konumu 1 tabanlıdır. start_position 0 ise boş dize döndürülür. start_position negatif bir değer ise konum dizenin sonundan geriye doğru sayılır. Bu durumda -1 son karaktere karşılık gelir ve sayım geriye doğru sırayla ilerler.
length: isteğe bağlı. Bu parametre BIGINT türündedir. Alt dize uzunluğu 0'dan büyük olmalıdır.
-
Dönüş değeri
Dönüş değeri STRING türündedir. Aşağıdaki kurallara uyar:
str STRING veya BINARY türünde değilse hata döndürülür.
length BIGINT türünde değilse veya 0'dan küçük ya da 0'a eşitse hata döndürülür.
length parametresi atlandığında str sonuna kadar olan alt dize döndürülür.
str, start_position veya length NULL ise NULL döndürülür.
-
Örnekler
-
Örnek 1: Bu örnek, belirtilen konumdan ve belirtilen uzunlukta
abcdizesinin bir alt dizesini döndürür. Örnek ifadeler:-- Returns bc. select substring('abc', 2); -- Returns b. select substring('abc', 2, 1); -- Returns bc. select substring('abc',-2,2); -- Returns ab. select substring('abc',-3,2); -- Returns 001. substring(bin(2345), 2, 3); -
Örnek 2: Bu örnek, bir giriş parametresinin NULL olduğu durumu gösterir. Örnek ifade:
-- Returns NULL. select substring('abc', null, null);
-
SUBSTRING_INDEX
-
Sözdizimi
string substring_index(string <str>, string <separator>, int <count>) -
Açıklama
Bu işlev, str dizesinden bir ayırıcının count-inci oluşumundan önceki veya sonraki bir alt dizeyi çıkarır. count pozitif ise ayırıcı arama soldan başlar. count negatif ise arama sağdan başlar. Bu işlev MaxCompute V2.0 uzantı işlevidir.
-
Parametreler
str: gereklidir. STRING türüdür. Çıkarılacak dizedir.
separator: gereklidir. STRING türü ayırıcı.
count: Gereklidir. Ayırıcının konumunu belirten bir INT değeridir.
-
Dönüş değeri
İşlev STRING türünde bir değer döndürür. Herhangi bir giriş parametresi NULL ise işlev NULL döndürür.
-
Örnekler
-
Örnek 1:
https://www.alibabacloud.comdizesinden çıkarım yapar. Örnek ifadeler:-- Returns https://www.alibabacloud. select substring_index('https://www.alibabacloud.com', '.', 2); -- Returns alibabacloud.com. select substring_index('https://www.alibabacloud.com', '.', -2); -
Örnek 2: Bir giriş parametresi NULL. Örnek ifade:
-- Returns NULL. select substring_index('https://www.alibabacloud.com', null, 2);
-
TO_CHAR
-
Sözdizimi
string to_char(boolean <value>) string to_char(bigint <value>) string to_char(double <value>) string to_char(decimal <value>) -
Açıklama
BOOLEAN, BIGINT, DECIMAL veya DOUBLE türündeki değerleri STRING temsillerine dönüştürür.
-
Parametreler
value: gereklidir. BOOLEAN, BIGINT, DECIMAL veya DOUBLE türünde bir değer.
-
Dönüş değeri
STRING türünde bir değer döndürür. Dönüş değeri aşağıdaki kurallara uyar:
value BOOLEAN, BIGINT, DECIMAL veya DOUBLE türünde değilse işlev hata döndürür.
value NULL ise işlev NULL döndürür.
-
Örnekler
-
Örnek 1: Değerleri STRING temsilcilerine dönüştürün. Örnek ifade:
-- Returns 123. select to_char(123); -- Returns TRUE. select to_char(true); -- Returns 1.23. select to_char(1.23); -
Örnek 2: Giriş parametresi NULL. Örnek ifade:
-- Returns NULL. select to_char(null);
-
TO_JSON
-
Sözdizimi
string to_json(<expr>) -
Açıklama
Belirtilen karmaşık veri türündeki expr ifadesini JSON dizesine dönüştürür.
-
Parametreler
expr: gereklidir. ARRAY, MAP veya STRUCT türünde bir ifade.
NotGiriş ifadesi STRUCT türündeyse (
struct<key1:value1, key2:value2>), aşağıdaki noktalara dikkat edin:İfadeyi JSON dizesine dönüştürürken tüm anahtarlar küçük harfe dönüştürülür.
Bir
valuenull ise buvaluedeğerine ait anahtar-değer çifti döndürülen JSON dizesine dahil edilmez. Örneğin,value2null isekey2:value2döndürülen JSON dizesine dahil edilmez.
-
Dönüş değeri
Bir JSON dizesi döndürülür.
-
Örnekler
-
Örnek 1: Belirtilen karmaşık veri türündeki bir ifadeyi JSON dizesine dönüştürün. Örnek ifade:
-- The return value is {"a":1,"b":2}. select to_json(named_struct('a', 1, 'b', 2)); -- The return value is {"time":"26/08/2015"}. select to_json(named_struct('time', "26/08/2015")); -- The return value is [{"a":1,"b":2}]. select to_json(array(named_struct('a', 1, 'b', 2))); -- The return value is {"a":{"b":1}}. select to_json(map('a', named_struct('b', 1))); -- The return value is {"a":1}. select to_json(map('a', 1)); -- The return value is [{"a":1}]. select to_json(array((map('a', 1)))); -
Örnek 2: Giriş ifadesi STRUCT türündedir. Örnek ifade:
-- The return value is {"a":"B"}. If the expression of the STRUCT type is converted into a JSON string, all keys are converted into lowercase letters. select to_json(named_struct("A", "B")); -- The return value is {"k2":"v2"}. The key-value pair to which null belongs is not included in the JSON string that is returned. select to_json(named_struct("k1", cast(null as string), "k2", "v2"));
-
TOLOWER
-
Sözdizimi
string tolower(string <source>) -
Açıklama
source dizesindeki büyük harfli İngilizce karakterleri küçük harfe dönüştürür.
-
Parametreler
source: gereklidir. STRING türünde bir değer. Giriş bir BIGINT, DOUBLE, DECIMAL veya DATETIME değeri ise örtük olarak STRING türüne dönüştürülür. Bu işlev yalnızca İngilizce karakterler üzerinde çalışır.
-
Dönüş değeri
STRING türünde bir değer döndürür. Döndürülen değer aşağıdaki kurallara dayanır:
source veri türü STRING, BIGINT, DOUBLE, DECIMAL veya DATETIME değilse hata döndürülür.
source NULL ise NULL döndürülür.
-
Örnekler
-
Örnek 1: Büyük harfleri küçük harfe dönüştürün. Örnek ifadeler:
-- Returns abcd. select tolower('aBcd'); -
Örnek 2: Giriş parametresi NULL. Örnek ifade:
-- Returns NULL. select tolower(null);
-
TOUPPER
-
Sözdizimi
string toupper(string <source>) -
Açıklama
source dizesindeki küçük harfli karakterleri karşılık gelen büyük harfli karakterlere dönüştürür.
-
Parametreler
source: gereklidir. STRING türü. Giriş BIGINT, DOUBLE, DECIMAL veya DATETIME ise örtük olarak STRING'e dönüştürülür. Yalnızca İngilizce karakterleri destekler.
-
Dönüş değeri
STRING türünde bir değer döndürür. Döndürülen değer aşağıdaki kurallara dayanır:
source veri türü STRING, BIGINT, DOUBLE, DECIMAL veya DATETIME değilse hata döndürülür.
source NULL ise NULL döndürülür.
-
Örnekler
-
Örnek 1: Küçük harfleri büyük harfe dönüştürün. Örnek ifadeler:
-- Returns ABCD. select toupper('aBcd'); -
Örnek 2: Giriş parametresi NULL. Örnek ifade:
-- Returns NULL. select toupper(null);
-
TRANSLATE
-
Sözdizimi
string translate(string|varchar <str1>, string|varchar <str2>, string|varchar <str3>) -
Açıklama
str1 içindeki str2 içinde görünen her karakteri str3 içindeki karşılık gelen karakterle değiştirir. Eşleşme bulunmazsa değiştirme yapılmaz. Bu işlev MaxCompute V2.0 sürümünde bir uzantıdır.
-
Dönüş değeri
STRING döndürür. Herhangi bir giriş parametresi NULL ise işlev NULL döndürür.
-
Örnekler
-
Örnek 1:
abababiçindekiababiçinde görünen her karaktericdiçindeki karşılık gelen karakterle değiştirin. Örnek ifade:-- Returns cdcdcd. select translate('ababab','abab','cd'); -
Örnek 2:
abababiçindekiababiçinde görünen her karaktericdefgiçindeki karşılık gelen karakterle değiştirin. Örnek ifade:-- Returns cdcdcd. select translate('ababab','abab','cdefg'); -
Örnek 3: Bir giriş parametresi NULL. Örnek ifade:
-- Returns NULL. select translate('ababab','cd',null);
-
TRIM
-
Sözdizimi
string trim(string <str>[,<trimChars>]) string trim([BOTH] [<trimChars>] from <str>) -
Açıklama
str dizesinin her iki ucundan karakterleri kaldırır:
trimChars belirtmezseniz işlev varsayılan olarak boşlukları kaldırır.
trimChars belirtirseniz işlev trimChars içindeki karakterleri bir küme olarak değerlendirir ve str dizesinin hem sol hem de sağ ucundan yalnızca bu kümedeki karakterlerden oluşan mümkün olan en uzun alt dizeleri kaldırır.
-
Parametreler
str: gereklidir. STRING türü. Kırpılacak dizedir. Giriş BIGINT, DECIMAL, DOUBLE veya DATETIME ise örtük olarak STRING'e dönüştürülür.
trimChars: isteğe bağlı. STRING türü. Kaldırılacak karakterler.
-
Dönüş değeri
STRING türü döndürür. Dönüş değeri aşağıdaki kurallara uyar:
str STRING, BIGINT, DOUBLE, DECIMAL veya DATETIME değilse hata döndürür.
str veya trimChars NULL ise NULL döndürür.
-
Örnekler
-
Örnek 1:
yxTxyomxxdizesinin her iki ucundaki boşlukları kaldırın. Örnek ifadeler:-- Returns yxTxyomxx. select trim(' yxTxyomxx '); -- Equivalent to: select trim(both from ' yxTxyomxx '); select trim(from ' yxTxyomxx '); -
Örnek 2:
yxTxyomxxdizesinin her iki ucundakixykümesine ait tüm karakterleri kaldırın.-- Returns Txyom. Any x or y on either end is removed. select trim('yxTxyomxx', 'xy'); -- Equivalent to: select trim(both 'xy' from 'yxTxyomxx'); select trim('xy' from 'yxTxyomxx'); -
Örnek 3: Giriş parametresi NULL. Örnek ifadeler:
-- Returns NULL. select trim(null); select trim('yxTxyomxx', null);
-
URL_DECODE
-
Sözdizimi
string url_decode(string <input>[, string <encoding>]) -
Açıklama
Giriş dizesini
application/x-www-form-urlencoded MIMEformatından standart karakterlere dönüştürür. Bu işlevurl_encodeişlevinin tersidir. Kodlama kuralları aşağıdaki gibidir:a–z ve A–Z değişmez.
Nokta (.), kısa çizgi (-), yıldız (*) ve alt çizgi (_) değişmez.
Artı işareti (+) boşluğa dönüşür.
%xyformatındaki diziler bayt değerlerine dönüştürülür. Ardışık baytlar, belirtilen encoding adı kullanılarak dizelere kodu çözülür.Diğer tüm karakterler değişmez.
-
Parametreler
input: Bu parametre gereklidir ve STRING türündedir. Giriş dizesini temsil eder.
encoding: Bu parametre isteğe bağlıdır ve kodlama formatını belirtir. GBK ve UTF-8 gibi formatları destekler. Belirtilmezse varsayılan kodlama UTF-8'dir.
-
Dönüş değeri
Bu işlev UTF-8 kodlamalı STRING türü döndürür. input veya encoding parametresi NULL ise işlev NULL döndürür.
-
Örnek
-- Returns examplefor url_decode:// (fdsf). select url_decode('%E7%A4%BA%E4%BE%8Bfor+url_decode%3A%2F%2F+%28fdsf%29'); -- Returns Example for URL_DECODE:// dsf(fasfs). select url_decode('Example+for+url_decode+%3A%2F%2F+dsf%28fasfs%29', 'GBK');
URL_ENCODE
-
Sözdizimi
string url_encode(string <input>[, string <encoding>]) -
Açıklama
Bir giriş dizesini
application/x-www-form-urlencoded MIMEbiçiminde kodlar. Kodlama kuralları:a–z ve A–Z harfleri değişmez.
Nokta (.), kısa çizgi (-), yıldız (*) ve alt çizgi (_) karakterleri değişmez.
Boşluklar artı işaretine (+) dönüştürülür.
Diğer tüm karakterler, belirtilen encoding kullanılarak bayt değerlerine dönüştürülür. Her bayt,
%xyşeklinde gösterilir; buradaxykarakterin onaltılık gösterimidir.
-
Parametreler
input: Zorunludur. STRING türündedir. Kodlanacak dizedir.
encoding: İsteğe bağlıdır. Kodlama biçimini belirtir. Desteklenen biçimler GBK ve UTF-8'dir. Belirtilmediğinde varsayılan değer UTF-8'dir.
-
Dönüş değeri
STRING döndürür. input veya encoding NULL ise NULL döndürür.
-
Örnek
-- Returns %E7%A4%BA%E4%BE%8Bfor+url_encode%3A%2F%2F+%28fdsf%29. select url_encode('examplefor url_encode:// (fdsf)'); -- Returns Example+for+url_encode+%3A%2F%2F+dsf%28fasfs%29. select url_encode('Example for url_encode:// dsf(fasfs)', 'GBK');
Referanslar
Yerleşik işlevlerin ötesine geçmek için kullanıcı tanımlı işlevler (UDF'ler) oluşturun. Daha fazla bilgi için bkz. Genel Bakış.