如何在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>