0

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

4

4 回答 4

3

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

declare @yourVar varchar(80)
select substring(@yourVar, 1, 40), substring(@yourVar, 40, 40)
于 2008-12-23T12:42:01.140 回答
2

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

于 2008-12-23T12:45:57.620 回答
0

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

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

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

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

于 2008-12-23T14:34:37.463 回答
0

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

于 2008-12-23T12:46:17.557 回答