SQL时(字符串操纵)



我得到了一个文本字符串由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后立即断开。

相关内容

  • 没有找到相关文章

最新更新