我有一個帶有列id(int)和trans_id string.
trans_id包含諸如20345,19345- 第一個 2 個字符代表年份,我想要查詢發生在 2020、2019 年的交易
uj5u.com熱心網友回復:
您應該將日期存盤在 adate或datetime列中,而不是將其存盤為字串或整數。而且您當然不應該在一列中存盤多個值。
假設trans_id是int你可以做的
SELECT *
FROM YourTable t
WHERE trans_id >= 19000 AND trans_id < 21000;
如果trans_id是一個varchar字串,你可以做
SELECT *
FROM YourTable t
WHERE trans_id LIKE '20%' OR trans_id LIKE '19%';
如果您選擇了更糟糕的版本并存盤了多個值,則需要先拆分它們
SELECT *
FROM YourTable t
WHERE EXISTS (SELECT 1
FROM STRING_SPLIT(trans_id, ',') s
WHERE s.value LIKE '20%' OR s.value LIKE '19%'
);
uj5u.com熱心網友回復:
您還可以使用LEFT獲取字串的前兩個字符。
然后IN用于您需要的年份串列。
SELECT *
FROM YourTable t
WHERE LEFT(trans_id, 2) IN ('19', '20')
但是不要在沒有BETWEEN將 2 位數字轉換為 INT 的情況下使用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/362726.html
標籤:sql-server 细绳 子串
