如何使用SQL查询直接将表列id过滤为相应的名称

本文关键字:过滤 id 查询 SQL 何使用 | 更新日期: 2023-09-27 18:18:12

我有这样一个表,其中列对应于名称:

。11 =第一,12 =第二,13 =第三…

COLUMNID(string)  starttime(string) endtime(string) 
11                 20111203123132    20101203143239
11                 20101203143156     20101203143322
11                     ...               ...
12
12
13
14
16
17
18
18

我需要一个查询给我名字而不是ID

COLUMNAME(string)  starttime(string) endtime(string) 
FIRST                 20111203123132    20101203143239
FIRST                 20101203143156     20101203143322
FIRST                    ...               ...
FIRST
FIRST
SECOND
SECOND
THIRD
...

解决方案:

SELECT ID, USERID,(大小写当substr (userid,1,4) like ' cc0% ' then ' admin '当substr (userid,1,4) like ' cc1% ' then ' theo '当substr (userid,1,4) like ' cc12% ' then ' pat '当substr (userid,1,4) like ' cc13% ' then ' doug '当substr (userid,1,4) like ' c22% ' then ' phil '当substr (userid,1,4) like ' k15% ' then ' sonia '当SUBSTR(USERID,1,4) LIKE 'k16%' THEN 'JEAN'当substr (userid,1,4) like ' p58% ' then ' fab '时当substr (userid,1,4) like ' p9% ' then ' log '时其他"N/A"结束)用户名FROM LOG_HISTORY

如何使用SQL查询直接将表列id过滤为相应的名称

这取决于您所针对的数据库类型。如果你的目标是SQL Server,我建议你探索像这样的东西

SELECT Name = 
   CASE COLUMNID
      WHEN '11' THEN First 
      WHEN '12' THEN Second
   END,
   starttime, endtime
FROM yourtable

你可能想看看你的数据库设计。我不确定你现在拥有的是最好的实现你想要的结果。是否有一个原因,开始时间和结束时间列是字符串,而不是日期时间?

编辑:修改查询以匹配问题更新

SQL没有将数字转换为序数的函数。

检查这个例子如何编写自定义的