SQL Server 2012:错误从nvarchar转换为数字

时间:2013-04-18 21:03:05

标签: visual-studio-2012 sql-server-2012

我正在尝试在我的应用程序中使用我的数据库来搜索电话号码。我已经进入“搜索标准生成器”屏幕,但我似乎无法正确查询。

这是我试过的查询,当我得到“从nvarchar转换为数字”错误时:

SELECT        phoneNumber, serviceDate, firstName, lastName, billingAddress, emailAddress, vehicleMake, vehicleModel, vehicleYear, vehicleColor, vehicleMileage
FROM            [Table]
WHERE        (phoneNumber LIKE @phoneNumber + N'%')

这是创建的表格:

CREATE TABLE [dbo].[Table] (
    [phoneNumber]    NUMERIC (18)  NOT NULL,
    [serviceDate]    DATE          NULL,
    [firstName]      NCHAR (10)    NULL,
    [lastName]       NCHAR (10)    NULL,
    [billingAddress] NVARCHAR (50) NULL,
    [emailAddress]   NVARCHAR (50) NULL,
    [vehicleMake]    NCHAR (10)    NULL,
    [vehicleModel]   NCHAR (10)    NULL,
    [vehicleYear]    INT           NULL,
    [vehicleColor]   NCHAR (10)    NULL,
    [vehicleMileage] INT           NULL,
    CONSTRAINT [PK_Table] PRIMARY KEY CLUSTERED ([phoneNumber] ASC)
);

如果需要VB代码,我也会提供它。

1 个答案:

答案 0 :(得分:0)

如果您要将手机“数字”视为字符串,为什么要将它们存储为数字?你可以这样做:

WHERE CONVERT(VARCHAR(32), phoneNumber) LIKE @phonenumber + '%';

(另请注意,这里不需要Unicode - 变音符号没有数字。)

但最好更改IMHO列的数据类型。