Sayısal fonksiyonlar
| Fonksiyon | Açıklama |
|---|---|
ROUND(x, n) | n basamağa yuvarla |
ABS(x) | Mutlak değer |
CEILING(x) / CEIL(x), FLOOR(x) | Yukarı / aşağı yuvarla |
x % y (Oracle: MOD(x, y)) | Bölümden kalan |
POWER(x, y), SQRT(x) | Üs, karekök |
Tam sayı bölmesi: aynı sorgu, farklı sonuç
İki tam sayıyı böldüğünde sonuç SQL türüne göre değişir. Aşağıdaki sorguyu çalıştır, sonra SQL türü sekmesini değiştirip tekrar çalıştır:
SELECT 7 / 2 AS tam_bolme,
7 / 2.0 AS ondalikli,
CAST(7 AS REAL) / 2 AS cast_ile;
| SQL türü | 7 / 2 |
|---|---|
| SQL Server, PostgreSQL, SQLite | 3 (tam sayı bölmesi) |
| MySQL, Oracle | 3.5 (MySQL'de tam sayı bölmesi için DIV) |
Oran hesaplarken (dönüşüm oranı, yüzde) bu hata çok yaygındır. Güvenli yol, payı ondalıklı yapmaktır: 100.0 * pay / payda. Böylece her SQL türünde aynı sonucu alırsın.
Veri tipleri
| Genel tip | SQL Server | PostgreSQL | MySQL | Oracle |
|---|---|---|---|---|
| Tam sayı | INT, BIGINT | INTEGER, BIGINT | INT, BIGINT | NUMBER(10) |
| Para / kesin ondalık | DECIMAL(12,2) | NUMERIC(12,2) | DECIMAL(12,2) | NUMBER(12,2) |
| Yaklaşık ondalık | FLOAT | DOUBLE PRECISION | DOUBLE | BINARY_DOUBLE |
| Metin | NVARCHAR(n) | VARCHAR(n), TEXT | VARCHAR(n) | VARCHAR2(n) |
| Tarih / zaman | DATE, DATETIME2 | DATE, TIMESTAMP | DATE, DATETIME | DATE, TIMESTAMP |
| Mantıksal | BIT | BOOLEAN | BOOLEAN (TINYINT) | NUMBER(1) (23ai: BOOLEAN) |
SQLite'ın esnek tipleriSQLite'ta yalnızca 5 depolama sınıfı vardır (NULL, INTEGER, REAL, TEXT, BLOB) ve tarihler metin olarak saklanır. Diğer SQL türleri tiplerde çok daha katıdır.
CAST ile dönüşüm
SELECT name,
CAST(price AS INTEGER) AS tam_fiyat,
CAST(stock AS TEXT) || ' adet' AS stok_metni
FROM products
LIMIT 3;
SQL Server'da
CONVERT(tip, değer, stil) ve hata vermek yerine NULL döndüren TRY_CAST / TRY_CONVERT da vardır. Ayrıntılar T-SQL modülünde.Ondalığı tam sayıya çevirmekSQL Server ve SQLite
CAST(2.7 AS INT) sonucunu 2'ye keser; PostgreSQL, MySQL ve Oracle 3'e yuvarlar. Niyetin buysa açıkça FLOOR veya ROUND kullan.