TRY_CAST işlevi, bir TEXT değerini belirtilen veri türüne dönüştürür. CAST işlevinden farklı olarak dönüşüm başarısız olduğunda hata vermez; bunun yerine NULL döndürür. Sorgunun kesilmesini önlemek ve hatalı girdileri daha esnek yönetmek istediğinizde TRY_CAST kullanın.
Hologres başka tür dönüştürme işlevlerini de destekler. Daha fazla bilgi için bkz. Date and time functions.
Sınırlamalar
TRY_CAST işlevi Hologres V2.2 veya sonraki sürümlerde kullanılabilir.
Kullanım notları
Giriş ifadesi (
source_string_expr) TEXT türünde olmalıdır.target_data_typeparametresi aşağıdaki türlerden biri olmalıdır: INTEGER, SMALLINT, BIGINT, REAL, DOUBLE PRECISION, BOOLEAN, DECIMAL, JSONB, DATE, TIMESTAMP veya TIMESTAMPTZ.DATE, TIMESTAMP ve TIMESTAMPTZ türleri için Hologres V3.0 veya sonraki sürüm gerekir.
Değer hedef türe dönüştürülemezse NULL döner.
Söz dizimi
TRY_CAST( <source_string_expr> AS <target_data_type> )
Parametreler
| Parametre | Veri türü | Açıklama |
|---|---|---|
source_string_expr |
TEXT | Dönüştürülecek sütun veya ifade. |
target_data_type |
Bkz. Kullanım notları | Hedef veri türü. Değer dönüştürülemezse NULL döner. |
Örnekler
TEXT türünü INT türüne dönüştürme
Bir tablo oluşturup test verilerini ekleyin ve ardından TRY_CAST işlevini kullanarak value sütunundaki TEXT değerlerini INT türüne dönüştürün.
-- Create a table and insert test data
CREATE TABLE IF NOT EXISTS try_cast_test (
key int,
value text
);
INSERT INTO try_cast_test VALUES (1, '1'), (2, 'abc');
-- Convert the value column from TEXT to INT
SELECT key, value, TRY_CAST(value AS INT) AS value_int
FROM try_cast_test;
Sonuç:
key | value | value_int
-----+-------+-----------
1 | 1 | 1
2 | abc | \N
(2 rows)
'abc' değeri INT türüne dönüştürülemediği için TRY_CAST işlevi bu satır için NULL döndürür.
Dönüşüm sonuçlarını işlemek için TRY_CAST ile CASE WHEN kullanma
Dönüşümün başarılı olup olmadığına göre dallanmak amacıyla TRY_CAST işlevini CASE WHEN ifadesiyle birleştirin. Bu yaklaşım, üretim ortamındaki sorgularda TRY_CAST sonuçlarını değerlendirirken en sık kullanılan kalıptır.
SELECT
value,
CASE
WHEN TRY_CAST(value AS INT) IS NULL THEN 'Not a valid integer'
ELSE 'Valid integer'
END AS conversion_status
FROM try_cast_test;
Sonuç:
value | conversion_status
-------+---------------------
1 | Valid integer
abc | Not a valid integer
(2 rows)