假設的SQL Server ...
看看在CHARINDEX和SUBSTRING功能。下面是如何分割它的一個例子,我會建議調整它以處理找不到所需特殊字符的情況。如果要將新值存儲爲某種類型的數字,您可能還需要對結果進行TRIM以擺脫空白。
BEGIN
DECLARE @start INT, @end INT, @delimiter CHAR(1),
SET @string NVARCHAR(MAX) = [string to split goes here!]
SET @delimiter = ';'
SELECT @start = 1, @end = CHARINDEX(@delimiter, @string)
INSERT INTO TABLE (fullstring, splitdata)
VALUES(@string, TRIM(SUBSTRING(@string, @start, @end - @start)))
SET @start = @end + 1
SET @delimiter = ';'
SET @end = CHARINDEX(@delimiter, @string, @start)
INSERT INTO TABLE (fullstring, splitdata)
VALUES(@string, TRIM(SUBSTRING(@string, @start, @end - @start)))
SET @start = @end + 1
SET @delimiter = '/'
SET @end = CHARINDEX(@delimiter, @string, @start)
INSERT INTO TABLE (fullstring, splitdata)
VALUES(@string, TRIM(SUBSTRING(@string, @start, @end - @start)))
END
您也可以嘗試用正則表達式來解決這個問題,這可能是少一些代碼沉重。另外,爲了不把自己埋在重複的代碼中,我會將「分裂」行爲從自己的功能中提取出來。
Oracle中的等價函數是INSTR和SUBSTR,如果這是您正在使用的。 Credit for the example
您正在使用哪種數據庫引擎SQL Server?甲骨文?請註明,因爲它們的內置函數都略有不同。 – guildsbounty 2014-10-03 20:17:35