0

さて、タイトルは状況を十分に正しく説明することはできません。これで、列のあるテーブルができました

Table1
Columns0, CHAR(20), NOT NULL.
Columns1, CHAR(4), Allow Nulls.
Data : 'ARR '

Table2
Columns0, CHAR(20), NOT NULL.
Columns1, CHAR(4), NOT NULL.
Data : 'ARR '

次に、2つのテーブルを結合します。

SELECT (ISNULL(a.Columns1,'') + ISNULL(b.Columns1,'')) AS WhatEver
FROM Table1 a 
left join Table2 b on a.Columns0 = b.Columns0

結果は'ARR ARR '
、これの代わりに次のように表示されます。'ARRARR '

なぜこれが起こるのですか?


編集2012/06/11:

苦労した後、私は次のようなことをすることになりました:

SELECT ISNULL(CONVERT(CHAR(4),a.Columns1),'') + ISNULL(b.Columns1,'')

その後、私だけが正しい結果を得る'ARR ARR '

しかし、私のデータ型はデータベースにあると確信CHAR(4)しています。

みんなありがとう。


編集2012/08/06:

私が機能していることがわかったもう1つの解決策は、TABLE 2 COLUMN 1を(CHAR(4)、NULL)に変更することです。これは、ALTER TABLE [table_name] MODIFY [column_name] [column_data_type] [null |notnull]を介して実行できます。

4

4 に答える 4

1

あなたの例は私のサーバー(SQL Server 2008 R2)で正常に機能します:

create table SOxx1
(
    col1  char(4),
    col2  char(20) not null
)

create table SOxx2
(
    col1  char(4),
    col2  char(20) not null
)
Go

insert into SOxx1 (col1, col2) VALUES ('ARR ', 'abc')
insert into SOxx2 (col1, col2) VALUES ('ARR ', 'abc')
go

SELECT (ISNULL(a.col1,'') + ISNULL(b.col1,'')) AS WhatEver 
FROM SOxx1 a  
left join SOxx2 b on a.Col2 = b.Col2

-- OUTPUT is 'ARR ARR '
于 2012-06-13T04:42:26.053 に答える
0

あなたのコラムはそうではCHARありませんVARCHARか?

SQL Serverから結果を取得した後、スペースを削除するものはありませんか?

これを試すことができますか:

declare @table1 table (id int, one char(4))
declare @table2 table (id int, one char(4))
insert into @table1 values (1 ,'ARR ')
insert into @table2 values (1 ,'ARR ')
select (isnull(a.one,'') + isnull(b.one,'')) AS WhatEver
from @table1 a left join @table2 b on a.id = b.id

さすがに

ARR ARR

于 2012-06-13T04:39:28.577 に答える
0

別の照合を試しましたか?

SELECT ISNULL(a.Columns1,'') collate Latin1_General_BIN + ISNULL(b.Columns1,'') collate Latin1_General_BIN AS WhatEver
FROM Table1 a 
left join Table2 b on a.Columns0 = b.Columns0
于 2012-06-13T05:41:37.487 に答える
-1
SELECT (ISNULL(a.Columns1,'') +ISNULL(b.Columns1,'')) AS WhatEver FROM Table1 a left join Table2 b on a.Columns0 = b.Columns0
于 2012-06-13T04:30:52.037 に答える