让决策更智能
新一代智能数据分析平台

各直连数据库行权限设置语法

观小数发表于:2020年06月09日 16:34:22更新于:2021年08月17日 16:22:48

1、如果使用MySQL直连,可以参考下述代码

FIND_IN_SET([督导id],[CURRENT_USER.督导ID])


参考函数注解:https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_find-in-set


2、如果使用HANA直连,可以参考下列代码:

locate(concat([CURRENT_USER.品牌],','),concat([品牌],','))>0


3、如果是SQL Server直连,可以参考下列代码:

写法一:如果[CURRENT_USER.门店] 字段的长度不等,可以用这个:

CHARINDEX(','+cast([store_code] as varchar)+',' , ','+[CURRENT_USER.门店]+',') > 0

写法二:如果[CURRENT_USER.工号] 字段长度相等,不存在:当Member_Id为10,100,1000的情况的时候可以简写:

CHARINDEX(cast([Member_Id] as string), [CURRENT_USER.工号])>0


4、如果是PostgreSQL直连,可以参考下列代码:


position([dept_name] in [CURRENT_USER.deptcode]) > 0


5、如果是Clickhouse直连,可以参考下列代码:

写法一,适用于没有null的数据集:

has(splitByChar(',',[CURRENT_USER.所在地区1]),[省份])

写法二(推荐写法):

has(cast(splitByChar(',',[CURRENT_USER.城市]),'Array(Nullable(String))'),[城市])>0


6、如果是Oracle直连,可以参考下列代码:

instr([CURRENT_USER.GID],[STORE_GID]) > 0

  

7、如果是TiDB直连,可以参考下列代码:

FIND_IN_SET([督导id],[CURRENT_USER.督导ID])


8、如果是Greenplum直连,可以参考下列代码:

[order_id] in (select unnest(string_to_array([CURRENT_USER.order_id],',')))


9、如果是Doris数据库直连,可以参考下列代码:

find_in_set([机构大区],[CURRENT_USER.机构大区])>0


Oracle直连为例,直接“> 0”这种写法可能会存在模糊查找的问题,如果要的是精确查找,这时候需要前后加特殊字符隔开,比如写成:

instr(','||[CURRENT_USER.城市]||',' , ','||[城市]||',') > 0


更多数据库语法欢迎补充...

    您需要登录后才可以回复