Visual studio 2012 SQL Server 2012:从nvarchar转换为数字时出错
我正在尝试在我的应用程序中获取我的数据库,以便通过电话号码进行搜索。我已经进入了“搜索条件生成器”屏幕,但我似乎无法正确查询 这是我尝试过的查询,当我得到“从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 (
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 + '%';