select * from role r,djd_user u where FIND_IN_SET(u.user_id,r.users);这么写是错误的,在kingbase8中,哪里该修改?
时间: 2024-03-16 19:41:04 浏览: 55
在 Kingbase8 中,您需要修改您的 SQL 查询语句。Kingbase8 不支持 FIND_IN_SET 函数,所以您需要使用其他函数来实现类似的功能。
一种替代方法是使用 LIKE 操作符来查询包含在逗号分隔列表中的值。例如,您可以使用以下查询:
```
SELECT * FROM role r, djd_user u WHERE CONCAT(',', r.users, ',') LIKE CONCAT('%,', u.user_id, ',%');
```
在这个查询中,我们使用 CONCAT 函数来将逗号分隔列表转换为以逗号分隔的字符串,并在前面和后面添加逗号。然后,我们使用 LIKE 操作符来查找包含在逗号分隔列表中的值。
请注意,这种方法可能会影响查询性能,因为它需要在每个行上执行字符串操作。因此,如果您的数据量很大,您可能需要考虑重新设计您的数据库模式。
相关问题
select u.org_id as orgId, u.mobile, o.org_name as orgName from djd_user u inner join sys_org o on u.org_id = o.org_id; 这条SQL能不能改成判断当o.org_name等于指定值时修改u.mobile等于'***'
可以使用以下SQL语句来实现:
UPDATE djd_user u
SET u.mobile = '***'
WHERE u.org_id IN (
SELECT o.org_id
FROM sys_org o
WHERE o.org_name = '指定值'
);
这个SQL语句会在sys_org表中查找org_name等于指定值的记录,并使用INNER JOIN将其与djd_user表中的记录关联。然后使用UPDATE语句将djd_user表中所有org_id等于sys_org表中org_id的记录中mobile字段的值修改为'***'。
select u.org_id orgId, u.user_id userId, u.show_order showOrder, u.email, u.status, u.photo, u.lsc, u.office_phone officePhone, u.logon_name logonName, u.global_status globalStatus, u.job_type jobType, u.sex, u.is_mobile_open isMobileOpen, u.job_status jobStatus, u.is_district_leader isDistrictLeader, u.is_mobile_plate_open isMobilePlateOpen, u.user_name userName, u.update_time updateTime, u.is_job_record_tj isJobRecordTj, u.user_job_id userJobId, u.job_position jobPosition, u.old_user_id oldUserId, u.is_home_phone_open isHomePhoneOpen, u.mobile, u.user_res_dep userResDep, u.flag, u.anno, u.is_del isDel, o.org_name orgName from djd_user u inner join sys_org o on u.org_id = o.org_id这样返回到MAP中显示的key都是小写的是为什么?
这是因为在 SQL 查询中使用了小写的列名,导致返回结果中的列名也是小写的。如果想要返回大写的列名,可以在 SQL 查询中使用 AS 关键字来指定别名,例如:
```
SELECT u.org_id AS orgId, u.user_id AS userId, ...
```
这样返回的结果中,列名就会使用别名中指定的大小写形式。
阅读全文