文本框控件不能接受不同数据类型的输入
Textbox control can't accept different data types of input
我想使用学生 ID 或 学生姓名 来搜索学生。所以我这样写 SELECT 声明:
SELECT * FROM [student] WHERE ([S_FName] LIKE '%' + @S_FName + '%') OR (SID =@SID)
但是,两个参数 @S_FName
和 @SID
共享同一个文本框控件,以便用户搜索学生。 S_FName 是 varchar(50)
并且 SID 是 int
我无法通过单个文本框使用学生姓名或学生 ID 真正搜索学生。我不断收到错误:
Conversion failed when converting the nvarchar value 'student1' to data type int.]
使用用户输入的相同搜索词进行两次比较。
对于INT
,先将其转换为字符串。
另一种选择是将搜索词转换为 INT
,但您必须对非数字值进行特殊处理。
create table Student
( StudentID int,
StudentName nvarchar(80) )
insert into Student ( StudentID, StudentName ) values
( 10123, 'Archimedes' ),
( 74701, 'Beatrice' ),
( 84448, 'Casandra' ),
( 99599, 'Archibald' )
declare @Search nvarchar(80)
set @Search = 'Arch'
select * from Student
where ( StudentName like '%' + @Search + '%' )
or ( cast(StudentID as nvarchar(20)) = @Search )
set @Search = '74701'
select * from Student
where ( StudentName like '%' + @Search + '%' )
or ( cast(StudentID as nvarchar(20)) = @Search )
如果您有 SQL Server 2012 或更高版本,您可以使用 Try_Convert
来简化。
select * from Student
where ( StudentName like N'%' + @Search + N'%' )
or ( StudentID = Try_Convert(int,@Search) )
你必须传递一个参数,因为文本框是一样的
并且您必须将 id 转换为 varchar,以便 id 和 fname 的类型相等
所以你可以按照下面的代码
SELECT [S_FName], SID, CAST(SID AS
varchar(50)) + '-' + S_FName AS S_FName_ID
FROM Coding_view
WHERE (CAST(SID AS varchar(50)) + '-' + S_FName LIKE
N'%Behmagham%')
祝你好运
我想使用学生 ID 或 学生姓名 来搜索学生。所以我这样写 SELECT 声明:
SELECT * FROM [student] WHERE ([S_FName] LIKE '%' + @S_FName + '%') OR (SID =@SID)
但是,两个参数 @S_FName
和 @SID
共享同一个文本框控件,以便用户搜索学生。 S_FName 是 varchar(50)
并且 SID 是 int
我无法通过单个文本框使用学生姓名或学生 ID 真正搜索学生。我不断收到错误:
Conversion failed when converting the nvarchar value 'student1' to data type int.]
使用用户输入的相同搜索词进行两次比较。
对于INT
,先将其转换为字符串。
另一种选择是将搜索词转换为 INT
,但您必须对非数字值进行特殊处理。
create table Student
( StudentID int,
StudentName nvarchar(80) )
insert into Student ( StudentID, StudentName ) values
( 10123, 'Archimedes' ),
( 74701, 'Beatrice' ),
( 84448, 'Casandra' ),
( 99599, 'Archibald' )
declare @Search nvarchar(80)
set @Search = 'Arch'
select * from Student
where ( StudentName like '%' + @Search + '%' )
or ( cast(StudentID as nvarchar(20)) = @Search )
set @Search = '74701'
select * from Student
where ( StudentName like '%' + @Search + '%' )
or ( cast(StudentID as nvarchar(20)) = @Search )
如果您有 SQL Server 2012 或更高版本,您可以使用 Try_Convert
来简化。
select * from Student
where ( StudentName like N'%' + @Search + N'%' )
or ( StudentID = Try_Convert(int,@Search) )
你必须传递一个参数,因为文本框是一样的 并且您必须将 id 转换为 varchar,以便 id 和 fname 的类型相等 所以你可以按照下面的代码
SELECT [S_FName], SID, CAST(SID AS
varchar(50)) + '-' + S_FName AS S_FName_ID
FROM Coding_view
WHERE (CAST(SID AS varchar(50)) + '-' + S_FName LIKE
N'%Behmagham%')
祝你好运