我已經像這樣設置了我的表。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');
我已經像這樣設置了我的表。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');
您的代碼適用於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
這不是一個答案 –
可能出現在表中的數據一些額外的空間問題,因此您可以通過以下方式使用TRM嘗試:
WHERE(concat(TRIM(COLUMN_1),TRIM(COLUMN_2)) = 'Test104312')
使用NVARCHAR
解決方案是將表設計更改爲使用NVARCHAR(100)而不是VARCHAR(100)。
NVARCHAR類型不會使用空格填充值,並且還有其他好處。
表設計
COLUMN_1 NVARCHAR 100 PRIMARY KEY
COLUMN_2 NVARCHAR 100
延伸閱讀:
好的,趕上!... –
查詢不返回值,因爲該值不存在你的桌子。 也許您的表格包含看起來完全相同的內容,但包含空格或其他不可打印的字符。與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
SELECT * FROM "TABLE" --will list only the first entry
WHERE (CONCAT("COLUMN_1", "COLUMN_2") = 'Test104312');
此外,您使用引用使用括號identifieres在HANA不起作用(語法或有一些功能我不知道),可以在MS-SQL中使用括號。考試可以在行和列商店中使用。找出不可打印字符的訣竅是從HANA Studio中刪除結果並將其記錄到記事本++。
'SELECT CONCAT(col1,col2)FROM TABLE'返回'Test104312'? – sagi
有沒有space_?所以你需要修剪? –