如何在sql中拆分字符串?

如何在sql中拆分字符串?,sql,sql-server,Sql,Sql Server,我有两个表,其中一个表有如下数据: id description 2 12.07.13y 1000eur to bank account KZ21321o0002134 4 To bank account KZasd9093636 12 of May 2016y 200dusd 我还有第二个表,我需要将表中过滤的信息放在第一个表中,如: 身份证 资料 银行账户 转帐 首先我需要拆分描述,然后我需要识别始终以“KZ”开头的ban_账户、数据和转账这很糟糕,但似乎能够提取ban_账

我有两个表,其中一个表有如下数据:

id  description
2   12.07.13y 1000eur to bank account KZ21321o0002134   
4   To bank account KZasd9093636 12 of May 2016y 200dusd
我还有第二个表,我需要将表中过滤的信息放在第一个表中,如:

  • 身份证
  • 资料
  • 银行账户
  • 转帐

  • 首先我需要拆分描述,然后我需要识别始终以“KZ”开头的ban_账户、数据和转账

    这很糟糕,但似乎能够提取ban_账户:

    CREATE TABLE exp
    (
     column1 varchar(400)
    );
    
    Insert into exp (column1) values ('12.07.13y 1000eur to bank account KZ21321o0002134');
    Insert into exp (column1) values ('To bank account KZasd9093636 12 of May 2016y 200dusd');
    
    Select
    CASE
      WHEN CHARINDEX ( SPACE(1), SUBSTRING ( column1, CHARINDEX('KZ' , column1),LEN(column1))) = 0
      THEN SUBSTRING ( column1, CHARINDEX('KZ' , column1),LEN(column1))
      ELSE SUBSTRING ( SUBSTRING (column1, CHARINDEX('KZ' , column1),LEN(column1)), 0, CHARINDEX (SPACE(1), SUBSTRING(column1, CHARINDEX('KZ' , column1),LEN(column1))))
    END result
    From exp
    

    首先,将表转换为XML

    然后创建包含月/工作日名称和数字1到3000的表(也可以将2016年作为当前年份)

    你需要一张有货币的桌子。我做了一个基于数据的

    在那之后,你需要将日期以正常的日期形式呈现出来,仅此而已

    XML示例:

    <row id="2">
      <b>12.07.13y</b>
      <b>1000eur</b>
      <b>to</b>
      <b>bank</b>
      <b>account</b>
      <b>KZ21321o0002134</b>
    </row>
    <row id="4">
      <b>To</b>
      <b>bank</b>
      <b>account</b>
      <b>KZasd9093636</b>
      <b>12</b>
      <b>of</b>
      <b>May</b>
      <b>2016y</b>
      <b>200dusd</b>
    </row>
    
    
    2013年7月12日
    1000欧元
    到
    银行
    账户
    KZ21321o0002134
    到
    银行
    账户
    KZasd9093636
    12
    属于
    也许
    2016年
    200d
    
    您使用的是哪种数据库管理系统?您使用的是哪种关系型数据库管理系统?在ORACLE(至少10g)中,您可以使用正则表达式(如REGEXP_SUBSTR)并尝试使用拟合模式拆分字符串?如果低于1000左右,则手动重新输入所有数据所需的时间较少:)您可以对所有3种情况进行硬编码。否则,您需要完整的regexp功能,它可以通过CLR集成到TSql中。请参阅或第三方产品(免费版即可)
    id  str_part        what_is
    2   12.07.13y       datepart
    2   1000eur         tranfered_money
    2   to              NULL
    2   bank            NULL
    2   account         NULL
    2   KZ21321o0002134 bank_account
    4   To              NULL
    4   bank            NULL
    4   account         NULL
    4   KZasd9093636    bank_account
    4   12              datepart
    4   of              NULL
    4   May             datepart
    4   2016y           datepart
    4   200dusd         tranfered_money
    
    <row id="2">
      <b>12.07.13y</b>
      <b>1000eur</b>
      <b>to</b>
      <b>bank</b>
      <b>account</b>
      <b>KZ21321o0002134</b>
    </row>
    <row id="4">
      <b>To</b>
      <b>bank</b>
      <b>account</b>
      <b>KZasd9093636</b>
      <b>12</b>
      <b>of</b>
      <b>May</b>
      <b>2016y</b>
      <b>200dusd</b>
    </row>