Visual studio 2012 SQL Server 2012:从nvarchar转换为数字时出错

Visual studio 2012 SQL Server 2012:从nvarchar转换为数字时出错,visual-studio-2012,sql-server-2012,Visual Studio 2012,Sql Server 2012,我正在尝试在我的应用程序中获取我的数据库,以便通过电话号码进行搜索。我已经进入了“搜索条件生成器”屏幕,但我似乎无法正确查询 这是我尝试过的查询,当我得到“从nvarchar转换为数值”错误时: 以下是创建的表: CREATE TABLE [dbo].[Table] ( [phoneNumber] NUMERIC (18) NOT NULL, [serviceDate] DATE NULL, [firstName] NCHAR (

我正在尝试在我的应用程序中获取我的数据库,以便通过电话号码进行搜索。我已经进入了“搜索条件生成器”屏幕,但我似乎无法正确查询

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

以下是创建的表:

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代码,我也会提供。

如果你想把电话“号码”当作字符串,为什么要将它们存储为数字?您可以这样做:

WHERE CONVERT(VARCHAR(32), phoneNumber) LIKE @phonenumber + '%';
(还请注意,这里不需要Unicode,因为umlauts中没有数字。)


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

这样您就可以将电话号码列更改为nvarchar或varchar?也许,我没有足够的信息来决定您的数据类型,但是如果您决定存储为字符串,请使用varchar。电话号码中可能需要支持哪些Unicode字符?
WHERE CONVERT(VARCHAR(32), phoneNumber) LIKE @phonenumber + '%';