SQL-使用“拆分”拆分字符串/&引用;这种情况多次发生

SQL-使用“拆分”拆分字符串/&引用;这种情况多次发生,sql,string,split,hsqldb,Sql,String,Split,Hsqldb,我正在寻找HSQLDB的查询 我有一个字符串,其中包含以“/”分隔的地址信息。现在我必须将这个字符串除以“/”并将各个地址信息插入到单独的列中 Address = /1234/CLAREVIEW////WILMINGTON/DE/19702 这需要拆分为 StreetNo = Address[1] = 1234 StreetName = Address[2] = CLAREVIEW StreetType = Address[3] = City = Address[6] = WILMINGT

我正在寻找HSQLDB的查询

我有一个字符串,其中包含以“/”分隔的地址信息。现在我必须将这个字符串除以“/”并将各个地址信息插入到单独的列中

Address =  /1234/CLAREVIEW////WILMINGTON/DE/19702
这需要拆分为

StreetNo = Address[1] = 1234
StreetName = Address[2] = CLAREVIEW
StreetType = Address[3] = 
City = Address[6] = WILMINGTON
StateCd = Address[7] = DE
ZipCd = Address[8] = 19702
我怎样才能做到这一点

CREATE TABLE #Results
   (
    Ordinal NUMERIC,
    StringValue VARCHAR(MAX)
   )

DECLARE @String VARCHAR(100),
   @Delimiter VARCHAR(100) 

SET @String = '/1234/CLAREVIEW////WILMINGTON/DE/19702'
SET @Delimiter = '/'

DECLARE @TempString VARCHAR(MAX) = @String,
   @Ordinal INT = 0,
   @CharIndex INT = 0

SET @CharIndex = CHARINDEX(@Delimiter, @TempString)
WHILE @CharIndex != 0
   BEGIN     
      SET @Ordinal += 1       
      INSERT   #Results
      VALUES   (@Ordinal, SUBSTRING(@TempString, 0, @CharIndex))       
      SET @TempString = SUBSTRING(@TempString, @CharIndex + 1, LEN(@TempString) - @CharIndex)     
      SET @CharIndex = CHARINDEX(@Delimiter, @TempString)
   END

IF @TempString != ''
   BEGIN
      SET @Ordinal += 1 
      INSERT   #Results
      VALUES   (@Ordinal, @TempString)
   END

SELECT   *
FROM     #Results

使用REGEXP\u SUBSTRING\u ARRAY函数创建过程以拆分为一个数组

 REGEXP_SUBSTRING_ARRAY('/1234/CLAREVIEW////WILMINGTON/DE/19702', '/\p{Alnum}*');
返回

 ARRAY['/1234','/CLAREVIEW','/','/','/','/WILMINGTON','/DE','/19702'] 
因此,程序应包括:

 CREATE PROCEDURE INSERT_USING_REGEXP (p1 VARCHAR(500)) 
  BEGIN ATOMIC
   DECLARE arr VARCHAR(200) ARRAY;
   SET arr = REGEXP_SUBSTRING_ARRAY(p1,'/\p{Alnum}*');
   INSERT INTO thetable ((StreetNo, StreetName, StreetType...) VALUES ( arr[1], arr[2], arr[3], ...);
  END;
然后


使用REGEXP\u SUBSTRING\u ARRAY函数创建过程以拆分为数组。然后在t(StreetNo,StreetName,StreetType…)中插入值(arr[1],arr[2],arr[3],…)@fredt我从未使用过REGEXP\u子字符串\u数组。我搜索了一下,但找不到任何有用的东西。你能提供一些例子吗?为什么你认为SQL Server解决方案(使用T-SQL)可以在HSQLDB上工作?谢谢。这太完美了。阿尔纳姆·迪恩似乎对我有用。我在标题中使用了[a-zA-Z0-9],有一种方法可以扩展正则表达式以包括特殊字符,而不仅仅是数字和字母
 CALL INSERT_USING_REGEXP('/1234/CLAREVIEW////WILMINGTON/DE/19702');