İşleçler; MaxCompute SQL deyimlerinde değerleri karşılaştırmanıza, hesaplamalar yapmanıza, dizeleri işlemenize, ikili verilerle çalışmanıza ve mantıksal koşulları birleştirmenize olanak tanır.
Genel Bakış
MaxCompute aşağıdaki işleç türlerini destekler:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
İlişkisel işleçler
İlişkisel işleçler iki değeri karşılaştırır ve TRUE, FALSE veya NULL döndürür. Aksi belirtilmedikçe, herhangi bir işlenen NULL ise sonuç NULL olur.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LIKE desen örnekleri
'aaa' LIKE 'a__' -- TRUE (underscore matches one character)
'aaa' LIKE 'a%' -- TRUE (percent matches zero or more characters)
'aaa' LIKE 'aab' -- FALSE
'a%b' LIKE 'a\\%b' -- TRUE (escaped percent matches literal %)
'axb' LIKE 'a\\%b' -- FALSE
Kullanım örnekleri
SELECT * FROM user WHERE user_id = '0001';
SELECT * FROM user WHERE user_name <> 'maggie';
SELECT * FROM user WHERE age > '50';
SELECT * FROM user WHERE birth_day >= '1980-01-01 00:00:00';
SELECT * FROM user WHERE is_female IS NULL;
SELECT * FROM user WHERE is_female IS NOT NULL;
SELECT * FROM user WHERE user_id IN (0001, 0010);
SELECT * FROM user WHERE user_name LIKE 'M%';
Önemli notlar
Uyuşmayan türler karşılaştırmalarda NULL döndürebilir. Karşılaştırmadan önce işlenenleri uyumlu türlere dönüştürün. Veri türü dönüştürme.
DOUBLE değerlerin karşılaştırılması
Sınırlı hassasiyet nedeniyle DOUBLE değerleri doğrudan = ile karşılaştırmayın. Bunun yerine, mutlak farkın bir eşikten küçük olup olmadığını kontrol edin:
ABS(0.9999999999 - 1.0000000000) < 0.000000001
-- 0.9999999999 and 1.0000000000 have a precision of 10 decimal digits,
-- whereas 0.000000001 has a precision of 9 decimal digits.
-- 0.9999999999 is considered to be equal to 1.0000000000.
ABS işlevi, girdisinin mutlak değerini döndüren yerleşik bir işlevdir.
MaxCompute'teki bir DOUBLE değeri genellikle 14 ondalık basamak hassasiyet sağlar.
STRING ve BIGINT değerlerin karşılaştırılması
STRING ile BIGINT'i karşılaştırmak her ikisini de örtülü olarak DOUBLE'a dönüştürür; bu durum hassasiyet kaybına neden olabilir. STRING'i önce BIGINT'e dönüştürmek için CAST(string_value AS BIGINT) kullanın.
Dize işleçleri
|
|
|
|
|
|
Örnek
SELECT first_name || ' ' || last_name AS full_name FROM employees;
Aritmetik işleçler
Aritmetik işleçler, sayısal değerler üzerinde matematiksel hesaplamalar yapar.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Örnek
SELECT age + 10, age - 10, age % 10, -age, age * age, age / 10, age DIV 10 FROM user;
Veri türü kuralları
Yalnızca STRING, BIGINT, DOUBLE ve TIMESTAMP_NTZ işlenenleri aritmetik işlemleri destekler. Tarih ve BOOLEAN değerleri desteklenmez. MaxCompute TIMESTAMP_NTZ veri türleri.
STRING işlenenleri, hesaplamadan önce örtülü olarak DOUBLE'a dönüştürülür.
BIGINT ve DOUBLE işlenenleri karıştırıldığında BIGINT değeri örtülü olarak DOUBLE'a dönüştürülür ve sonuç DOUBLE olur.
Hem A hem de B BIGINT ise
A / BDOUBLE döndürür. Diğer tüm aritmetik işlemler iki BIGINT işleneninde BIGINT döndürür.
Bitsel işleçler
Bitsel işleçler, tamsayıların ikili gösterimi üzerinde çalışır. Her iki işlenen de BIGINT olmalıdır. Örtülü tür dönüştürmeleri uygulanmaz.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Mantıksal işleçler
Mantıksal işleçler BOOLEAN ifadelerini birleştirir. Yalnızca BOOLEAN işlenenleri desteklenir; örtülü tür dönüştürmeleri uygulanmaz.
Aşağıdaki doğruluk tabloları, TRUE, FALSE ve NULL değerlerinin tüm kombinasyonları için sonuçları gösterir:
AND
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
OR
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
NOT
|
|
|
|
|
|
|
|
|
|
|
|
İşleç önceliği
Bir ifade birden çok işleç içerdiğinde MaxCompute bunları aşağıdaki sırayla değerlendirir. Daha düşük numaralar daha yüksek önceliğe sahiptir. Aynı düzeydeki işleçler soldan sağa doğru değerlendirilir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Varsayılan önceliği geçersiz kılmak için parantez kullanın. Örneğin:
a = 1 AND b = 1 OR c = 1 -- Evaluates AND first, then OR.
a = 1 AND (b = 1 OR c = 1) -- Evaluates OR first (inside parentheses), then AND.