Sql server sql字符串提取

Sql server sql字符串提取,sql-server,regex,string,varchar,Sql Server,Regex,String,Varchar,我在SQLServer2008中有一个列,它是varchar(255)。 该专栏充满了“测量”,大约有15000条记录。 由于该列为字符串类型,并由人工输入,因此变得混乱 e、 g 100x200cm 200x400mm 3“乘9” 30 x 20 12厘米长 基本上,我需要将所有测量值(我可以)提取到可用的维度中,并将每个单元存储到一个新列中(高度/宽度/深度) 有人能建议最好的方法吗 我在研究正则表达式,但不确定前进的最佳途径,我建议使用非常严格的解析器,每当遇到无法显式处理的问题时,就

我在SQLServer2008中有一个列,它是varchar(255)。 该专栏充满了“测量”,大约有15000条记录。 由于该列为字符串类型,并由人工输入,因此变得混乱 e、 g

  • 100x200cm
  • 200x400mm
  • 3“乘9”
  • 30 x 20
  • 12厘米长
基本上,我需要将所有测量值(我可以)提取到可用的维度中,并将每个单元存储到一个新列中(高度/宽度/深度)

有人能建议最好的方法吗


我在研究正则表达式,但不确定前进的最佳途径,我建议使用非常严格的解析器,每当遇到无法显式处理的问题时,就会抛出异常。这样你就可以避免意外

首先,您应该为此使用脚本语言

获取记录并对其进行迭代,对于尝试解析的每条记录:

  • ^([1-9][0-9]*)x([1-9][0-9]*)([a-z]+)$
    -如果匹配,则将
    $3
    与有效单位列表匹配,例如“cm”、“mm”、“m”等

  • ^([1-9][0-9]*)([^]+)by([1-9][0-9]*)(.+)$
    -如果匹配,比较匹配的单位
    $2
    $4
    。再次将它们与有效单位列表进行匹配,如果成功,但它们不相同,则将一个转换为另一个


您不断为每个抛出异常的项添加严格的检查。这样,表达式列表会随着您处理的情况而扩展。

我建议使用非常严格的解析器,每当遇到无法显式处理的问题时,就会抛出异常。这样你就可以避免意外

首先,您应该为此使用脚本语言

获取记录并对其进行迭代,对于尝试解析的每条记录:

  • ^([1-9][0-9]*)x([1-9][0-9]*)([a-z]+)$
    -如果匹配,则将
    $3
    与有效单位列表匹配,例如“cm”、“mm”、“m”等

  • ^([1-9][0-9]*)([^]+)by([1-9][0-9]*)(.+)$
    -如果匹配,比较匹配的单位
    $2
    $4
    。再次将它们与有效单位列表进行匹配,如果成功,但它们不相同,则将一个转换为另一个


您不断为每个抛出异常的项添加严格的检查。这样,您的表达式列表将随着您处理的情况而扩展。

祝您好运。无论如何,我不会在SQL中这样做:太多的组合无法解析。祝你好运。无论如何,我不会在SQL中这样做:太多的组合无法解析。注意:SQL Server不支持t-SQL中的正则表达式,这就是我注意到使用脚本语言的原因。很抱歉,这是为了OP,不是为了您。甲骨文有正则表达式,有些人搞混了…:-)注意:SQL Server不支持t-SQL中的正则表达式,这就是我注意到使用脚本语言的原因。很抱歉,这是为了OP,不是为了您。甲骨文有正则表达式,有些人搞混了…:-)