信息8152(级别16,状态14,行10)将截断字符串或二进制数据
def position(x) :
y=[]
a=str(x)
if a[0]=='b' : # is a variable and it's not defined but 'b' is a string
y.append(0)
else:
y.append(1)
return y
答案 0 :(得分:0)
没有表模式(即CREATE TABLE
语句)就不可能回答这个问题。错误本身非常清楚,查询正在尝试将字符串值插入较短的列中。没有表的定义,就不可能找出它是哪个。
最好的方法是提出解决此问题的方法。最简单的事情是仅注释掉行,直到错误消失。
另一种选择是计算数据中每一列的最大长度,并将其与列定义进行比较,例如使用:
select max(len(CustomerID)) as CustomerID, max(len(CustomerName)) as CustomerName,
max(len(Address)) as Address, max(len(City)) as City, max(len(PostalCode)) as PostalCode,
max(len(Country)) as Country
from (values
(3, 'Antonio Moreno Taquería', 'Mataderos 2312', 'México D.F.', 05023, 'Mexico'),
(4, 'Around the Horn', '120 Hanover Sq.', 'London', 110025, 'UK'),
(5, 'Berglunds snabbköp', 'Berguvsvägen 8', 'Luleå', 0022, 'Sweden'),
(6, 'Blauer See Delikatessen', 'Forsterstr. 57', 'Mannheim', 68306, 'Germany'),
(7, 'Blondel père et fils', '24 place Kléber', 'Strasbourg', 67000, 'France'),
(8, 'Bólido Comidas preparadas', 'C/ Araquil, 67', 'Madrid', 28023, 'Spain'),
(9, 'Bon app''', '12, rue des Bouchers', 'Marseille', 13008, 'France'),
(10, 'Bottom-Dollar Marketse', '23 Tsawassen Blvd.', 'Tsawassen',284, 'Canada'))
x(CustomerID, CustomerName, Address, City, PostalCode, Country)
这将返回:
CustomerID CustomerName Address City PostalCode Country
2 25 20 11 6 7
您必须将这些大小与列定义进行比较,以找出哪一个太短。
查询本身也有其他问题。
é
,ä
和å
。 M60 7LH
。达米安(Damien)在PO14 3AU
发表的评论中,谷歌称该评论位于费勒姆。即使在同一国家/地区,尺寸也不同表列应为nvarchar(...)
,查询应使用字符串文字,即N'México D.F.'
而不是'México D.F.'
,邮政编码应存储在nvarchar()
字段中< / p>