Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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
Mysql SQL将字符转换为布尔值_Mysql_Sql - Fatal编程技术网

Mysql SQL将字符转换为布尔值

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

我的表中有一行带有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 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 ;