我在MySQL中看到有Cast()和Convert()函数从值创建整数,但有没有办法检查一个值是否为整数?is_int()我正在寻找像PHP这样的东西.
请考虑下表:
create table mixedvalues (value varchar(50));
insert into mixedvalues values
('100'),
('ABC100'),
('200'),
('ABC200'),
('300'),
('ABC300'),
('400'),
('ABC400'),
('500'),
('ABC500');
Run Code Online (Sandbox Code Playgroud)
我怎么能写一个SELECT语句将只返回数字样值
100
200
300
400
500
Run Code Online (Sandbox Code Playgroud)
我被赋予了查看MSSQL查询问题的任务,我不是SQL专业版!这不是我的强项.
我在2个不同的数据库中有2个表; 忽略表引用,因为我已将它们从此查询中删除.我的问题是PERSON_CODE是一个表中的整数值,另一个是VARCHAR,我将运行此查询并将数据直接解析到Users表中,同时在PHP中散列密码.
但是,由于Users表中的某些字段是Jane,John这样的字符名称,并且Students中的所有值都是整数,因此我会因数据类型而收到错误.
下面是我到目前为止构建的查询 - 它非常简单:
SELECT Students.PERSON_CODE, Students.PASSWORD
FROM Students
LEFT JOIN users
ON Students.PERSON_CODE = users.username
WHERE Students.PERSON_CODE > '0'
AND users.username IS INTEGER <- How do i do this.
Run Code Online (Sandbox Code Playgroud)
我需要知道是否有一种方法可以忽略Users表中不是整数的字段,所以我只能从Students表中获得整数结果.
以下是完整的解决方案.谢谢Preveen.
SELECT Students.PERSON_CODE, Students.PASSWORD
FROM Students
LEFT JOIN users
ON Students.PERSON_CODE = CASE
When ISNUMERIC(users.username) = 1 THEN users.username
END
WHERE Students.PERSON_CODE > '0'
Run Code Online (Sandbox Code Playgroud)
新的更新
我做了一些更改,因为我希望查询只使用PERSON_COde/username作为标识符来显示不在两个表中的行.
SELECT Students.PERSON_CODE, Students.PASSWORD
FROM Students
LEFT JOIN users
ON cast(Students.PERSON_CODE as varchar(15)) = users.username
WHERE users.username = cast(Students.PERSON_CODE as varchar(15)) …Run Code Online (Sandbox Code Playgroud) 如果值仅为数字,有没有办法更新 mysql 中的列?
IE。 UPDATE myTable SET ColumnA =NewValue WHERE ColumnA isnumeric
Column A是varchar(25)和Column A值可以是文本或 1 或 2 或 23 ...
感谢你
值-> {1,2,是,否,5,6}
select if((value is numeric),value,'not a numeric') as column_name
Run Code Online (Sandbox Code Playgroud)
如果在我的mysql中选择查询如何实现
mysql ×6
sql ×3
numeric ×2
numbers ×1
php ×1
regex ×1
select ×1
sql-server ×1
sql-update ×1
varchar ×1