我的表格数据如下:
id | text
----------------
1 | applicationName="App1" some text here applicationName="App2" text again applicationName="App2"
2 | some text here applicationName="App3" some text here
3 | some text here applicationName="App3"
我的输出应该是:
id | text
---------------------
1 | App1
1 | App2
1 | App2
2 | App3
3 | App3
我尝试了什么:我可以使用substring()
和charindex()
为每行提取第一个匹配项,但我无法找到每行的后续项如输出中所示。
答案 0 :(得分:0)
您必须根据具体要求创建UDF。 我只编写脚本,测试并将其转换为UDF然后使用交叉应用
DECLARE @i VARCHAR(300) = 'applicationName="App1" some text here applicationName="App2" text again applicationName="App2"'
DECLARE @j VARCHAR(300)
Declare @delimeter char(2)='="'
DECLARE @t1 TABLE (col1 VARCHAR(50))
WHILE LEN(@i) > 0
BEGIN
IF (charindex(@delimeter, @i) > 0)
BEGIN
PRINT LEN(@i)
SET @j = SUBSTRING(@i, charindex(@delimeter, @i) + 2, 4)
INSERT INTO @t1
VALUES (@j)
SET @i = stuff(@i, 1, charindex(@delimeter, @i) + 7, '')
END
ELSE
BREAK
END
SELECT *
FROM @t1
然后假设您创建了名为split的TVF,然后像这样使用它,
select *,fn.* from @t t
cross apply(select * from dbo.split('="',t.textdata))fn
答案 1 :(得分:0)
所以你可以尝试以下TSQL
的 See SQL demo here 强>
<p:commandLink oncomplete="
#{documentController.documentAlreadyOpenedInExternalWindow?alert('succeed');
:window.open('previewDocument.xhtml?documentId=#{documentController.documentId(task)}', 'new')"
update="yourElement/Form ID"/>