SQL Server CONCAT功能

时间:2016-01-20 03:33:20

标签: sql sql-server

我试图像这样写一个声明

SELECT CONCAT(street_name, ' ', street_number) as 'street_detail' 
FROM geo_map 
WHERE CONCAT(street_name, ' ', street_number) LIKE '%'

我的桌子是这样的

postal_code int
building_name nchar(200)
street_number nchar(60)
street_name nchar(120)

我得到的结果只是街道名称,而不是街道号码,虽然我的街道号码有价值,不知道我的连续出了什么问题。

我正在使用SQL Server

1 个答案:

答案 0 :(得分:2)

最好使用NVARCHAR(...)代替NCHAR(...)类型来存储您拥有的信息。原因是对于NCHAR(...)类型,字符串用尾随空格填充以填充字段的整个长度。

NCHAR(200)字段中的字符串始终 200个字符宽。 street_name,空格和street_number的串联将是261个字符宽。建筑物编号将显示在连接中的第202个字符上。

也许您没有在连接中看到街道号码,因为您的显示字段(在您的程序,SSMS,网页......中)不够广泛。

现在将您的街道名称存储在NVARCHAR(200)以及NVARCHAR(...)字段中的所有其他相关信息中,您就不会遇到此问题。存储在这些字段中的字符串用尾随空格填充,您会在连接中预期的位置看到您的街道号。