【发布时间】:2018-08-17 07:33:30
【问题描述】:
我在下面有这些数据:
FName | Lname | Notes | Flag
----- ----- ----- ----
John Smith John Smith didn't know 1
Bill Jones Tom Johnson knows 0
我需要创建和填充一个变量 (Flag),它查看 Notes 列,在 Fname 和 Lname 列中搜索值,如果 Notes 同时包含 Fname 和 Lname 值,则分配 1,如果仅包含 1,则分配 0 ,或者没有来自 Fname 和 Lname 的值。
我查看了 CONTAINS、LIKE 和 INSTR,但在引用时遇到问题,我看到的示例希望我输入静态值以搜索 ("John"),而不是列引用 (" Fname")。
我想写一个 CASE 语句,上面写着
- 查看每一行,如果 Notes 字段包含 Fname 和 Lname 字段中的值,则 Flag =1,否则,Flag =0。
我试过了
CASE
WHEN
(
SELECT
Fname, Lname, Notes
FROM
table
WHERE CONTAINS ((Notes, Fname) AND (Notes, Lname)) > 0
)
THEN '1' ELSE '0' END
AS Flag
FROM table;
感谢任何帮助。谢谢 !
【问题讨论】:
-
将 case 表达式改为选择列表。
-
contains是非标准运算符。请为您正在使用的数据库产品添加标签postgresql、oracle、db2、sql-server、... -
AHWNN - 这是一个 Oracle 数据库,我添加了标签。 JarlH - 谢谢你的帮助!
标签: sql oracle where-clause contains