現在カラム値分割SQL文字列値
(以下ここで値が動的に変化して、一時テーブルからの列の値である)
45 | 00055 | 9/30/2016 | Vodafone | Randy Singh | Newyork | Test Msg | TBL101 | PC | 1.00 | COMP101 | CS | 1.00.............. etc
試験後7 PIPE、すなわちに基づいて分割する必要がありますメッセージ
出力は
文字列1
する必要があります(第2文字列として)
列2
TBL101 | PC | 1.00 | COMP101 | CS | 1.00......... etc
機能
CREATE FUNCTION dbo.SUBSTRING_INDEX
(
@str NVARCHAR(4000),
@delim NVARCHAR(1),
@count INT
)
RETURNS NVARCHAR(4000)
WITH SCHEMABINDING
BEGIN
DECLARE @XmlSourceString XML;
SET @XmlSourceString = (SELECT N'<root><row>' + REPLACE((SELECT @str AS '*' FOR XML PATH('')) , @delim, N'</row><row>') + N'</row></root>');
RETURN STUFF
(
((
SELECT @delim + x.XmlCol.value(N'(text())[1]', N'NVARCHAR(4000)') AS '*'
FROM @XmlSourceString.nodes(N'(root/row)[position() <= sql:variable("@count")]') x(XmlCol)
FOR XML PATH(N''), TYPE
).value(N'.', N'NVARCHAR(4000)')),
1, 1, N''
);
END
GO
DECLARE @EmpId NVARCHAR(1000)
select @EmpId = temp from OMSOrderTemp
SELECT dbo.SUBSTRING_INDEX(@EmpId, N'|', 7) AS Result;e
ここでの検索結果にのみstring1が表示され、最初の行。あなたと幸せのために
使用している特定のデータベースのタグを追加してください。 –
一般的には、データベースからデータベースまで様々な文字列関数がありますので、適切な答えを得るために使用しているDBMSにタグを付けます。 –
whileループとcharindexを使用してテーブルに格納します。 –