SQL WHILE(字符串操作)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL WHILE(字符串操作)相关的知识,希望对你有一定的参考价值。
我有一个由38个字符组成的文本字符串,我想在特定列的数据库中搜索该字符串。如果匹配,我希望另一列中的相应值作为结果。如果没有找到匹配项,我希望字符串被右侧的一个字符串切断,并执行新的匹配搜索。这应该重复,直到找到匹配或者我的字符用完为止
有谁能指出我正确的方向?
这是我到目前为止所做的代码,但它并没有真正做到我所期望的:
SET NOCOUNT ON
DECLARE @ITEM VARCHAR(38)
DECLARE @CTR INT = 0
DECLARE @RES VARCHAR(40)
SET @ITEM = 'KLS3055P3H01T01A3913 STDP STDP V2 SOMO'
SET @RES = NULL
WHILE @RES IS NULL
BEGIN
SET @RES = (SELECT A.a_nr FROM spekgbp.dbo.art A WHERE A.a_bet LIKE @ITEM)
SET @ITEM = LEFT(@ITEM, LEN(@ITEM)-1)
SET @CTR = @CTR + 1
IF (@CTR =10)
BREAK
END
SELECT @RES as 'RES', @ITEM as 'ITEM'
答案
如果我理解正确的话,这是我的建议:
SET NOCOUNT ON
DECLARE @ITEM VARCHAR(38)
DECLARE @CTR INT = 0
DECLARE @RES VARCHAR(40)
SET @ITEM = 'KLS3055P3H01T01A3913 STDP STDP V2 SOMO'
SET @RES = NULL
WHILE (1 = 1)
BEGIN
SET @RES = (SELECT MIN(A.a_nr) FROM spekgbp.dbo.art A WHERE A.a_bet = @ITEM)
IF (@RES IS NOT NULL)
BEGIN
BREAK
END
SET @ITEM = LEFT(@ITEM, LEN(@ITEM)-1)
SET @CTR = @CTR + 1
IF (@CTR = 10)
BEGIN
BREAK
END
END
SELECT @RES as 'RES', @ITEM as 'ITEM'
我添加了无限循环,因为当找到匹配时,@ ITEM仍然在最后被切断,并且以我的方式循环在找到@RES之后立即中断。
以上是关于SQL WHILE(字符串操作)的主要内容,如果未能解决你的问题,请参考以下文章
spark关于join后有重复列的问题(org.apache.spark.sql.AnalysisException: Reference '*' is ambiguous)(代码片段