我有一個 VARCHAR 資料庫欄位,其資料存盤方式如下:
DatabaseField
1185731-2148838B
1185731-2148838S
1185731-2148838W
1185731-2148839B
我想將此欄位分成兩個單獨的列 - 包含“-”兩側的數字。
要獲取“-”前后的值,我可以使用以下內容
SUBSTRING(DatabaseField,0,CHARINDEX('-',DatabaseField))
SUBSTRING(DatabaseField,CHARINDEX('-',DatabaseField) 1,LEN(DatabaseField))
這給了我
NewColumnA NewColumnB
1185731 2148838B
1185731 2148838S
1185731 2148838W
1185731 2148839B
然后我怎么能從新列 B 中洗掉任何非數字字符 - 它可能不是列中的一個字母 - 它可能是 2 或 3,所以我不能只洗掉新列中的最后一位數字。
uj5u.com熱心網友回復:
東西他們!
declare @test table (DatabaseField varchar(30));
insert into @test values
('1185731-2148838B')
, ('1234567-1234567?')
, ('1185731-214883612WAH')
, ('1185731-2148839BLAH')
;
select DatabaseField
, [NewColumnA] = LEFT(DatabaseField, CHARINDEX('-', DatabaseField)-1)
, [NewColumnB] = PARSENAME(REPLACE(STUFF(DatabaseField, PATINDEX('%[^0-9-]%',DatabaseField),42,''),'-', '.'),1)
from @test;
| 資料庫欄位 | 新列A | 新列B |
|---|---|---|
| 1185731-2148838B | 1185731 | 2148838 |
| 1234567-1234567? | 1234567 | 1234567 |
| 1185731-214883612WAH | 1185731 | 214883612 |
| 1185731-2148839BLAH | 1185731 | 2148839 |
在
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/371549.html
上一篇:組或交叉功能
