我在數據庫表像有一個複雜的編號爲00-000-000。 所有名稱存儲在一個字段中分離數據在SQL
01-000-000=Warehouse
01-001-000-=Rack
01-001-001=Bin cart
進入同一個表。我想分離3個不同領域的數據。在SQL中可能嗎?
我在數據庫表像有一個複雜的編號爲00-000-000。 所有名稱存儲在一個字段中分離數據在SQL
01-000-000=Warehouse
01-001-000-=Rack
01-001-001=Bin cart
進入同一個表。我想分離3個不同領域的數據。在SQL中可能嗎?
由於我們沒有完全夠用的信息我假設你想在開始每行到3倍獨立的數字拆分3號標識符...
如果ID總是固定長度(即2個字母然後是短劃線然後3個字母然後是短劃線然後3個字母),可以使用子字符串函數將它們分開;
WITH TestData as (
SELECT '01-000-000=Warehouse' AS Id
UNION
SELECT '01-001-000-=Rack' AS Id
UNION
SELECT '01-001-001=Bin cart' AS Id
)
SELECT
Id,
substring(Id, 0, 2) AS FirstId,
substring(Id, 4, 3) AS SecondId,
substring(Id, 8, 3) AS ThirdId,
substring(Id, 11, len(id) - 10) AS RestOfString
FROM TestData
如果他們是你將不得不使用類似CHARINDEX函數查找虛線的位置,然後再對它們拆分可變長度。
如果它總是將是相同的長度,那麼你可以做使用左,右
測試數據一些簡單的代碼;
IF OBJECT_ID('tempdb..#TestData') IS NOT NULL DROP TABLE #TestData
GO
CREATE TABLE #TestData (FieldName varchar(50))
INSERT INTO #TestData (FieldName)
VALUES
('01-000-000=Warehouse')
,('01-001-000-=Rack')
,('01-001-001=Bin cart')
查詢;
SELECT
FieldName
,LEFT(FieldName,2) Result1
,RIGHT(LEFT(FieldName,6),3) Result2
,RIGHT(LEFT(FieldName,10),3) Result3
FROM #TestData
結果;
FieldName Result1 Result2 Result3
01-000-000=Warehouse 01 000 000
01-001-000-=Rack 01 001 000
01-001-001=Bin cart 01 001 001
我需要倉庫,貨架,賓車分開不是ID –
我的id來本店倉庫和第二總店架和第三賓車 –
我需要導致這種形狀COL-1 warehoue COL-2架COL-3箱車 –
將此用於具有2「 - 」符號的動態值。
SELECT SUBSTRING('001-0011-0010',1,CHARINDEX('-','001-0011-0010')-1) COLA,
SUBSTRING ('001-0011-0010',
CHARINDEX('-','001-0011-0010')+1,
CHARINDEX('-','001-0011-0010',
CHARINDEX('-','001-0011-0010')+1)-(CHARINDEX('-','001-0011-0010')+1)
) COLB,
SUBSTRING ('001-0011-0010',(CHARINDEX('-','001-0011-0010',
CHARINDEX('-','001-0011-0010')+1))+1, LEN('001-0011-0010')
) COLC
感謝
存在與PARSENAME功能
select PARSENAME(replace(left(FieldName,10),'-','.'),3) col1,
PARSENAME(replace(left(FieldName,10),'-','.'),2) col2,
PARSENAME(replace(left(FieldName,10),'-','.'),1) col3 from yourTable
這就是所謂的正常化,而不是分離的另一種方法。這是可能的,但你必須寫代碼來做到這一點。你有一個*特定的問題嗎? –
當然是的。但是你必須更好地定義你所需要的,並且至少要顯示一些嘗試。作爲提示,您可以使用子字符串函數的更新函數。嘗試一下,然後在這裏添加它,如果你不能這樣做的話。 –