我试图像这样写一个声明
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
答案 0 :(得分:2)
最好使用NVARCHAR(...)
代替NCHAR(...)
类型来存储您拥有的信息。原因是对于NCHAR(...)
类型,字符串用尾随空格填充以填充字段的整个长度。
NCHAR(200)
字段中的字符串始终 200个字符宽。 street_name
,空格和street_number
的串联将是261个字符宽。建筑物编号将显示在连接中的第202个字符上。
也许您没有在连接中看到街道号码,因为您的显示字段(在您的程序,SSMS,网页......中)不够广泛。
现在将您的街道名称存储在NVARCHAR(200)
以及NVARCHAR(...)
字段中的所有其他相关信息中,您就不会遇到此问题。存储在这些字段中的字符串不用尾随空格填充,您会在连接中预期的位置看到您的街道号。