私は80文字のアドレスとして名前が付けられたSQLのフィールドを持っています。このフィールドを、それぞれ40文字のaddr1とaddr2の2つのフィールドに入れたいと思います。どうすればいいのですか。
saurabh
質問する
1318 次
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()なので、addr1としてsubstr(addr、1、40)を選択し、...からaddr2としてsubstr(addr、40)を選択します。
于 2008-12-23T12:45:57.620 に答える
0
そのテーブルを1列ではなく2列に変更した方が、スキーマの方が良いと思います。現在の値を解析するよりも、そのソリューションの方がいいと思います。
于 2008-12-23T12:46:17.557 に答える
0
40 番目の位置にある 80 文字の値を力ずくで切り刻むと、単語の途中で壊れる危険があります。代わりに、次のことを行うことができます。
- すべての一連の空白を 1 つの空白に置き換えます。
- 40 桁目またはその前の最後の空白を見つけます。
- その空白より前のすべてを最初の結果フィールドに配置します。
- その空白の後のすべてを 2 番目の結果フィールドに配置します。
上記の操作の正確な詳細は、使用できるツールによって異なります (たとえば、SQL のみ、または別のプログラムを使用して 1 つの DB から読み取り、別の DB に書き込むなど)。
切り捨てを避けるために、「単語」を区切るために結果値の 1 つが 40 文字を超える必要があるような方法で、80 文字の値が埋められる可能性があります。
于 2008-12-23T14:34:37.463 に答える