|
<< İçindekileri Görüntülemek İçin Tıklayın >> Yer: Teknik Kılavuzlar > IVEDI SQL Kullanıcı Kılavuzu > 2. Sözlüksel yapı > 2.3 Sabitler (literaller) |
Dört biçim vardır. Önek harfi tırnakla bitişik yazılır.
'…'İçindeki tırnak ikilenerek yazılır. Sabit satır sonunda kapanmamışsa sonraki satıra devam eder. Birbirini izleyen iki düz sabit birleştirilir; aralarına yorum girebilir:
'O''Brien' -- O'Brien
'uzun bir metnin ' /* yorum */ 'devamı'c'…' (ya da e'…')| Kaçış | Anlamı |
|---|---|
\r \n \f \v \t \a \b \\ | Alışıldık denetim karakterleri |
\0 … \777 | 1–3 sekizlik basamak |
\xHH | Tam iki onaltılık basamak, tek bayt |
\uXXXX | Dört basamaklı kod noktası |
\UXXXXXXXX | Sekiz basamaklı kod noktası |
Tanınmayan bir kaçış, karakterin kendisi olarak yazılır. '' ikilemesi bu biçimde de
çalışır.
Kaçışlar yalnızca c'…' biçiminde işlenir. Düz
'\t42' dört karakterdir (ters bölü, t, 4, 2), sekme değil. Bu, fark edilmesi zor bir
hata kaynağıdır.
q'<ayırıcı>…<ayırıcı>'İçinde hiçbir kaçış işlenmez ve tırnak ikilemek gerekmez. Ayırıcı tek bir
karakterdir; dört köşeli ayırıcı kendiliğinden eşlenir: {→},
(→), [→], <→>.
Öteki karakterler kendileriyle kapanır.
q'`create domain d as char default 'C'`'
q'{ içinde ' ve " serbest }'İçinde tırnak geçen SQL metnini bir dizgi olarak taşımanın en temiz yolu budur; ters tırnak
(`) bu lehçede başka hiçbir anlam taşımadığı için güvenli bir ayırıcıdır.
x'…'Onaltılık basamak çiftleri; baytlar arasında boşluk ve satır sonu serbesttir. Sonuç bir ham bayt dizisidir (karakter kümesi yoktur).
x'48656C6C6F' -- "Hello"
x'12 23 34' -- boşluklar yok sayılırİkili basamaklı b'…' biçimi ve karakter kümesini zorlayan
_<karakterkümesi>'…' öneki yoktur.
Bir tip adının hemen ardından bir karakter dizisi sabiti gelirse değer o tipte okunur:
| Yazım | Beklenen biçim | Notlar |
|---|---|---|
date '…' | yyyy-MM-dd | |
time '…' | HH:mm:ss | |
time_tz '…' | HH:mm:ss+TZ | |
timestamp '…' | yyyy-MM-dd HH:mm:ss | |
timestamp_tz '…' | yyyy-MM-dd HH:mm:ss+TZ | |
boolean '…' | TRUE T YES Y ON 1 / FALSE F NO N OFF 0 | Büyük/küçük harf duyarsız |
guid '…' | 32 basamak, 8-4-4-4-12, {…} ya da (…) | Biçim kendiliğinden algılanır |
interval '…' <niteleyici> | Niteleyicinin adlandırdığı alanlar | Standart yazım; bkz. 3.4 |
interval_ds '…' | dd HH:mm:ss | Metin herhangi bir alandan sonra bitebilir |
interval_ym '…' | yy-MM | Metin herhangi bir alandan sonra bitebilir |
Standart interval '…' <niteleyici> yazımında metin, niteleyicinin
adlandırdığı alanları tam olarak taşır: interval '5 12:30:45' day to second,
interval '5' day, interval '3-4' year to month. Eksik ya da fazla alan
INVALID_TYPE_CONVERSION verir. interval_ds / interval_ym
önekli yazımlar daha hoşgörülüdür: metin tamamlanmış herhangi bir alandan sonra bitebilir
(interval_ds '5' beş gündür, interval_ds '1 02' bir gün iki saattir).
Bir sayı sabitinin tipi yazımına göre belirlenir:
| Yazım | Tipi | Kural |
|---|---|---|
42 | INTEGER | int32'ye sığan tam sayı |
3000000000 | BIGINT | int32'ye sığmayan tam sayı |
4.57 | DOUBLE PRECISION | Ondalık ayırıcı içeren sabit |
1.5e3 | DOUBLE PRECISION | Üs içeren her sabit (SQL:2011 5.3: yaklaşık sayı sabiti) |
4.57m | NUMBER | M soneki |
| 19+ karakterli sabit | NUMBER | Üs içermeyen, 18 karakterden uzun her sabit |
0x1F | INTEGER / NUMBER | Onaltılık; 18 karakterden uzunsa NUMBER |
4.57 bir DOUBLE'dır, sabit noktalı bir değer değil. Bu yüzden
bir NUMBER değişkenle doğrudan karşılaştırıldığında ikisi son bitlerde ayrılabilir ve
eşit çıkmaz; ikisi de 4.57 yazdırdığı hâlde. Sabit noktalı bir sabit için
M soneki kullanılır (4.57m) ya da değer açıkça dönüştürülür.
4.25 gibi ikilik tabanda tam gösterilebilen değerlerde sorun görünmediği için bu
tuzak aralıklı ortaya çıkar.
F ve D sonekleri sabiti DOUBLE yapar (42f de bir
DOUBLE'dır); L ve U sonekleri kabul edilir ama tipi değiştirmez. Bir sayı
sabitinden hemen sonra sözcük karakteri gelirse hata verilir: 12abc geçersizdir.
1..5 yazımı 1 ve .. olarak ayrıştırılır; aralık
yazımı ile ondalık ayırıcı çakışmaz.
Ondalık ayırıcı her zaman noktadır ve makinenin yerel ayarından etkilenmez.
Bu, hem sayı sabitleri hem de metin ⇄ sayı dönüşümleri için geçerlidir:
cast('4.25' as double precision) ondalık ayırıcısı virgül olan bir işletim
sistemi yerelinde de çalışır ve cast(4.25 as string) '4.25' verir,
'4,25' değil. Sayı sabitlerinde binlik ayırıcı yoktur.
Bunun sebebi lehçenin taşınabilir olması gereğidir: aynı betik farklı yerellerdeki makinelerde aynı sonucu verir. Yerel ayar; tarih biçimleri, ay/gün adları ve para birimi gibi sunum alanlarını etkiler, sayı ayırıcılarını etkilemez. Yerel ayar SQL'den değiştirilemez (bkz. 9.4).
NULL, TRUE, FALSE ve UNKNOWN anahtar
sözcüklerdir. Test için IS [NOT] NULL, IS [NOT] TRUE|FALSE|UNKNOWN ve
IS [NOT] DISTINCT FROM yazımları vardır.