0
選擇已知的東西和空間之間的字符串表列我有這樣的數據(MSSQL 2005):之前
... something... 7000mAh ... something
... something... 610mAh ... something
的一點是,我有毫安前2,3 4個甚至5位數。 我想選擇所有的數字,包括mAh,比如610mAh,7000mAh等等。
有人能指出我正確的方向嗎?
選擇已知的東西和空間之間的字符串表列我有這樣的數據(MSSQL 2005):之前
... something... 7000mAh ... something
... something... 610mAh ... something
的一點是,我有毫安前2,3 4個甚至5位數。 我想選擇所有的數字,包括mAh,比如610mAh,7000mAh等等。
有人能指出我正確的方向嗎?
只要你知道你只會有這些確切的模式,那麼這將工作。正如@Derp在評論中所說的那樣,最好的辦法是將數據從字符串中嵌入 - 可能使用下面的代碼 - 更加永久。
DECLARE @test TABLE (my_string VARCHAR(20))
INSERT INTO @test (my_string)
VALUES
('test 12345mAh test;'),
('test 1234mAh test;'),
('test 123mAh test;')
SELECT
CASE
WHEN PATINDEX('%[0-9][0-9][0-9][0-9][0-9]mAh%', my_string) > 0
THEN SUBSTRING(my_string, PATINDEX('%[0-9][0-9][0-9][0-9][0-9]mAh%', my_string), 8)
WHEN PATINDEX('%[0-9][0-9][0-9][0-9]mAh%', my_string) > 0
THEN SUBSTRING(my_string, PATINDEX('%[0-9][0-9][0-9][0-9]mAh%', my_string), 7)
WHEN PATINDEX('%[0-9][0-9][0-9]mAh%', my_string) > 0
THEN SUBSTRING(my_string, PATINDEX('%[0-9][0-9][0-9]mAh%', my_string), 6)
WHEN PATINDEX('%[0-9][0-9]mAh%', my_string) > 0
THEN SUBSTRING(my_string, PATINDEX('%[0-9][0-9]mAh%', my_string), 5)
ELSE NULL
END
FROM
@test
這是工作,它正在選擇我的目標字符串正確。謝謝! – a3des
請將您的問題標記爲您正在使用的數據庫。 –
您正在使用哪種RDBMS?你能給出一些確切的數據和預期產出的例子嗎?你試過什麼了? –
請注意,數據庫應該存儲「數據」,而不是「信息」。通常在其中包含多個數據的句子或字符串應該位於不同的列中。例如「蘋果紅」應該有兩列。帶「紅」的顏色和帶「蘋果」的fruit_name。也許你應該創建一個「mAh」列,並將數字放在裏面,然後從數據庫中選擇它們,並將其他「somethings ...」放在不同的列中。希望是有道理的 – Markinson