Sqlite

如何使用 substr 列並在限制之間獲取值

  • January 24, 2019

假設有一個表格作為文本類型**SampleName, Country, UnitID, HS**列。

-- Table
CREATE TABLE #TempTable (
   Name text,
   UnitID text,
   Country text, 
   HS text
)
INSERT INTO #TempTable 
   (Name, UnitID, Country, HS)
VALUES 
   ('User1',  'U1',  'US', 30),
   ('User2',  'U2',  'AS', 40),
   ('User3',  'U3',  'AS', 50),
   ('User4',  'U4',  'AS', 60),
   ('User5',  'U5',  'AS', 80),
   ('User6',  'U6',  'AS', 90),
   ('User7',  'U7',  'AS', 10),
   ('User8',  'U8',  'AS', 10),
   ('User9',  'U9',  'AS', 20),
   ('User10', 'U10', 'AS', 30),
   ('User11', 'U11', 'AS', 40),
   ('User12', 'U12', 'AS', 70)

在這裡,我需要更新 U2 到 U10 之間的 HS 值。

所以最初我試圖檢索 1 到 3 之間的值。

select * from schedules where substr(unitIndex, 2, 1) between '1' AND '3'

但我收到了所有的記錄,而不是U1 and U2 and U3唯一的。

請糾正我在這裡做錯了什麼。

這裡有兩個問題。

您正在嘗試將欄位值分開。

數據庫通常不擅長這樣做。他們喜歡把東西放在一起,但剖析它們?沒那麼多。

其次,您試圖將字元串值“解釋”為數字。

很容易得到錯誤的結果(例如,‘2’ > ‘12’ 而 2 < 12)。確保轉換“數字”

$$ -looking $$位到您可以使用的正確數字類型。 這應該可以滿足您的需求。

select * 
from schedules 
where cast( substr(unitID, 2) as integer) between 2 and 10 ; 

引用自:https://dba.stackexchange.com/questions/227936