标题不是很明确,所以让我整理一下:
我有一张桌子,看起来像这样:
ID NAME EXTID
===================
1 xxxx 1
-------------------
2 aaaa 2
-------------------
3 dddd ENTR
-------------------
4 ssss 4
ID:整数
名称:varchar(50)
EXTID:varchar(50)
我的Web应用程序允许用户插入行。插入时,用户应精确命名。然后,创建一个
ID
,并将我设置为列EXTID
,它是一个外部ID,与列ID
的值相同。然后,用户可以在将来更改EXTID
(出于同步目的,但请不要进行无用的说明)。问题 :
我想获取所有具有相同
ID
和EXTID
值的记录。我尝试以下查询:SELECT T.*
FROM myTable T
WHERE T.ID = T.EXTID
但是我遇到了以下错误:
无法将int数据类型的varchar值'ENTR'转换为int。
所以我的问题是:是否可以创建像这样的三元表达式:
SELECT T.*
FROM myTable T
WHERE T.ID = (ISNUMERIC(T.EXTID) ? CAST(T.EXTID AS int) : -1)
-1以在强制转换失败的情况下不显示任何行。
最佳答案
这种显式转换将允许转换进行另一种方式,而不是尝试将非数字值隐式转换为int。
SELECT T.*
FROM myTable T
WHERE CAST(T.ID as varchar(50)) = T.EXTID
关于mysql - WHERE子句T-Sql中的三元表达式验证类型字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29253164/