如果使用sql存在,在字符串中获取相同3 charecter的位置?

时间:2016-03-15 10:51:23

标签: sql sql-server regex string sql-server-2008-r2

我在字符串中有3个常见的字符

 ABCxcdk893         --yes 
 xxxABCpoe4
 ABCkkksdlk         --yes
 ABC4899kff         --yes
 er45346gdf

现在如何遍历所有字符串的每个字符串,并使用模式获取匹配的字符串,如我们的情况

  %[_ABC_]%[0,7]

我说的是什么?

       while @i < @len
  begin
set @char = SUBSTRING(@MyString, @i,1)

if @char not like '%[^a-zA-Z0-9]%'
begin

      ?????--HERE ITERATION
  --  set @char = ''

end
 else
    begin

   --PATTERN MAKING?????????

  -- set @i = @i + 1
  end
--set @result =???????
 set @i = @i + 1
 end

你不会理解这一点,我知道这件事,所以你可以提供匹配2 3个字符串的代码,并在同一个地方返回相同的3个字符,如果exxist我的意思是3个字符串中存在相同的模式。

2 个答案:

答案 0 :(得分:1)

如果我清楚地了解你,你想要获得位于同一位置的所有匹配3个字母图案的字符串对。 这是给你的一小段。

我假设你有一个带字符串的表。

<input type="radio">

诀窍是

  1. 制作所有字符串中的所有3个字母图案

  2. 将字符串与模式进行比较

  3. DECLARE @strs TABLE (s varchar(50))
    INSERT INTO @strs (s) VALUES ('ABCxcdk893'), ('xxxABCpoe4'), ('ABCkkksdlk'), ('ABC4899kff'), ('er45346gdf')
    

答案 1 :(得分:0)

这是我第一次尝试解决你的问题,因为我仍然不清楚你想要什么......

SELECT *
FROM [data table]
WHERE [field name] LIKE 'ABC%'
       OR [field name] LIKE 'http://ABC%'

这将匹配以ABC开头或以http://ABC开头的任何字符串。如果您需要与此不同的内容,请提供更多示例。