Mysql SQL将字符转换为布尔值
我的表中有一行带有char值。当值为NULL时,应输出false。如果该值不为NULL,则应输出true 因此,当我尝试将Mysql SQL将字符转换为布尔值,mysql,sql,Mysql,Sql,我的表中有一行带有char值。当值为NULL时,应输出false。如果该值不为NULL,则应输出true 因此,当我尝试将user\u group.tUser设置为0或1时,会出现以下错误: 无效的列名“false” 无效的列名“true” SELECT COALESCE((SELECT name FROM v_company WHERE companyId = userView.companyId), ' ') AS co
user\u group.tUser
设置为0或1时,会出现以下错误:
无效的列名“false”
无效的列名“true”
SELECT COALESCE((SELECT name
FROM v_company
WHERE companyId = userView.companyId), ' ') AS company,
userView.value AS companyUser,
userView.display AS displayedUser,
CASE
WHEN user_group.tUser IS NULL THEN 0
ELSE 1
END AS userIsMemberOfGroup
FROM v_user userView
LEFT OUTER JOIN cr_user_group user_group
ON ( user_group.group = 'Administrators'
AND user_group.tUser = userView.value )
ORDER BY company ASC,
displayedUser ASC
一个简单的
CASE
表达式在这里适用:
SELECT
name,
CASE WHEN name IS NOT NULL THEN true ELSE false END AS name_out
FROM yourTable;
如果,我们还可以使用将上述内容缩短一点:
IF(name IS NOT NULL, true, false)
当名称为空时,您可以使用MySQL函数返回'false'
,否则'true'
:
SELECT IF(name IS NULL, 'false', 'true')
FROM table;
我想这就是你想要的逻辑:
SELECT COALESCE(v.name, ' ') as company,
u.value as companyUser, u.display as displayedUser,
(EXISTS (SELECT 1
FROM cr_user_group ug
WHERE ug.group = 'Administrators' AND
ug.tUser = uv.value
)
) as userIsMemberOfGroup
FROM v_user u LEFT JOIN
v_company c
ON c.companyId = v.companyId
ORDER BY company ASC, displayedUser ASC ;
一般来说,MySQL在布尔和数字之间的转换非常灵活,0
表示false,1
表示true。您是要求我们编写一个查询来实现这一点还是一些PHP代码来实现这一点?使用ISNULL,只需将字段名传递给它,它就会返回true或false。我看不到您的查询中使用false和true。错误从何而来?@杜威。示例查询无法生成该错误,因为它根本没有对true
或false
的引用。
SELECT COALESCE(v.name, ' ') as company,
u.value as companyUser, u.display as displayedUser,
(EXISTS (SELECT 1
FROM cr_user_group ug
WHERE ug.group = 'Administrators' AND
ug.tUser = uv.value
)
) as userIsMemberOfGroup
FROM v_user u LEFT JOIN
v_company c
ON c.companyId = v.companyId
ORDER BY company ASC, displayedUser ASC ;