Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 搜索按钮,数据类型不匹配_Sql_Sql Server_Tsql_Types - Fatal编程技术网

Sql 搜索按钮,数据类型不匹配

Sql 搜索按钮,数据类型不匹配,sql,sql-server,tsql,types,Sql,Sql Server,Tsql,Types,我正在尝试做一个搜索按钮,它可以从一个搜索栏中搜索姓氏和用户id SELECT user_id, Title, FirstName, Surname, Address, PostCode, PhoneNumber from [User] WHERE (Not (user_id)=100003) and (user_id= '$ID' or Surname ='ID') order by user_id 这个问题是,user_id为,int,姓氏为nvarchard数据类型,我搜索

我正在尝试做一个搜索按钮,它可以从一个搜索栏中搜索姓氏和用户id

 SELECT user_id, Title, FirstName, Surname, Address, PostCode, PhoneNumber 
 from [User] 
 WHERE (Not (user_id)=100003)
 and (user_id= '$ID' or Surname ='ID')
 order by user_id
这个问题是,user_id为,int,姓氏为nvarchard数据类型,我搜索user id时得到输出,但搜索姓氏时得到错误- 将varchar值“nes”转换为数据类型int时,转换失败


任何帮助都将被告知

这里的问题是“nes”不是有效数字。SQL Server不知道如何在整数列中查找此值

您可以通过将INT字段转换为nVarChar来解决这个问题。这是一个:


应该加上,;其工作原理是将1、2和3转换为“1”、“2”和“3”。虽然它们看起来像数字,但它们不是。它们现在是文本,可以与其他文本值(如“nes”)进行比较。
-- What we are searching for.
DECLARE @SearchFor    NVARCHAR(255) = '1';

-- Use a CTE to create some sample records to search.
WITH SampleData AS
(
    /* Create some sample records.
        */
    SELECT
        r.[User_Id],
        r.Name
    FROM
        (
            VALUES
                (1, 'Tom'),
                (2, 'Dick'),
                (3, 'Harry')
        ) AS r([User_Id], Name)
)
SELECT
    *
FROM
    SampleData
WHERE
    @SearchFor IN (CAST([User_id] AS NVARCHAR(255)), Name)
;