2016-12-01 244 views
0

我已經像這樣設置了我的表。Sap Hana IN連接列的運算符

表設計

COLUMN_1 VARCHAR 100 PRIMARY KEY 
COLUMN_2 VARCHAR 100 

表項

COLUMN_1 | COLUMN_2 
Test  | 104312 

爲什麼此查詢返回的值當表中存在的價值?

SELECT * 
FROM [TABLE] 
WHERE (CONCAT([COLUMN_1], [COLUMN_2]) = 'Test104312'); 
+0

'SELECT CONCAT(col1,col2)FROM TABLE'返回'Test104312'? – sagi

+0

有沒有space_?所以你需要修剪? –

回答

0

您的代碼適用於MS SQL。

  DECLARE @table TABLE (COLUMN_1 varchar(11), COLUMN_2 varchar(10)) 
      INSERT @table VALUES ('Test','104312') 

      select *,concat(COLUMN_1,COLUMN_2) from @table 
      WHERE(concat(COLUMN_1,COLUMN_2) = 'Test104312'); 

輸出:

COLUMN_1 COLUMN_2 (No column name) 
Test  104312  Test104312 
+0

這不是一個答案 –

0

可能出現在表中的數據一些額外的空間問題,因此您可以通過以下方式使用TRM嘗試:

WHERE(concat(TRIM(COLUMN_1),TRIM(COLUMN_2)) = 'Test104312') 
0

查詢不返回值,因爲該值不存在你的桌子。 也許您的表格包含看起來完全相同的內容,但包含空格或其他不可打印的字符。與HANA afaik中的VARCHAR(100)和NVARCHAR(100)無關。 VARCHAR(100)可以包含100個ASCII字符和100個或更少的Unicode字符,具體取決於字符串中包含多少個兩字節或更多字節的UTF8字符。 NVARCHAR(100)總是可以包含100個Unicode字符。下面一個例子:

create column table "TABLE" 
(COLUMN_1 NVARCHAR(100) PRIMARY KEY, 
    COLUMN_2 NVARCHAR(100)); 
Insert into "TABLE" (Column_1, Column_2) values ('Test', '104312'); -- will be found 
Insert into "TABLE" (Column_1, Column_2) values ('Test ', '104312'); --will not be found, space 
Insert into "TABLE" (Column_1, Column_2) values ('Test' || nchar(13), '104312'); --will not be found, non-printable 

Select * from "TABLE"; -- will list all three entries 

enter image description here

SELECT * FROM "TABLE" --will list only the first entry 
    WHERE (CONCAT("COLUMN_1", "COLUMN_2") = 'Test104312'); 

enter image description here

此外,您使用引用使用括號identifieres在HANA不起作用(語法或有一些功能我不知道),可以在MS-SQL中使用括號。考試可以在行和列商店中使用。找出不可打印字符的訣竅是從HANA Studio中刪除結果並將其記錄到記事本++。