我如何将一个sql变量分成2

Posted

技术标签:

【中文标题】我如何将一个sql变量分成2【英文标题】:how do i divide a sql variable into 2 【发布时间】:2008-12-23 12:39:48 【问题描述】:

我在 sql 中有一个名为 address 的字段,它是 80 个字符。 我想将此字段放入 2 个字段 addr1 和 addr2,每个字段 40 个字符。 我该怎么做。

【问题讨论】:

【参考方案1】:

这适用于 T-SQL,但对于 PL/SQL 并没有太大的不同

declare @yourVar varchar(80)
select substring(@yourVar, 1, 40), substring(@yourVar, 40, 40)

【讨论】:

+1(在 oracle 中函数是 SUBSTR)download.oracle.com/docs/cd/B28359_01/olap.111/b28126/…【参考方案2】:

对于plsql,是substr(),所以select substr(addr, 1, 40) as addr1, substr(addr, 40) as addr2 from ...

【讨论】:

嗨,我们必须从 wat 中进行选择。我已经从 1 个光标中选择了 addr 变量,需要对其进行划分 所以如果你有一个变量 addr 我假设你正在编写一个存储过程,所以声明两个变量 addr1 和 addr2 并使用 addr1 := substr(addr, 1, 40); addr2 := substr(addr, 40);【参考方案3】:

我认为如果您将该表更改为具有两列而不是一列,您的架构会更好。我更喜欢该解决方案来解析当前值。

【讨论】:

【参考方案4】:

在第 40 位暴力砍掉 80 个字符的值会冒着在单词中间中断的风险。您可能想要改为执行以下操作:

    用一个空格替换所有运行的空白。 在第 40 位或之前找到最后一个空白。 将所有内容放在第一个结果字段中该空白之前的所有内容。 将所有内容放在第二个结果字段中该空白之后。

上述操作的具体细节将取决于您可以使用哪些工具(例如,仅 SQL,或从一个数据库读取并使用单独的程序写入另一个数据库等)

80 个字符的值可能会以这样一种方式填充,即“单词”之间的中断将要求结果值之一的长度超过 40 个字符以避免截断。

【讨论】:

以上是关于我如何将一个sql变量分成2的主要内容,如果未能解决你的问题,请参考以下文章

如何将表达式的结果分配给 SQL 替换变量?

如何将大sql转储文件拆分成小块并在原始文件中维护每个记录,尽管后来删除了其他记录

sql查询中,如何将某列 分成 两列。

SQL 怎么将一列中的数据按一个分隔符分成多列显示

如何将字符串变量传递给动态sql中的where子句

应用T-SQL语言,如何将一列的只分成两列显示,这样的语句怎么写呢?