Tôi cần phải viết một trình phân tích cú pháp logic boolean sẽ dịch ngôn ngữ logic boolean thành mệnh đề SQL WHERE.Làm cách nào để phân tích cú pháp logic boolean?
Thứ tự của toán hạng sẽ luôn theo thứ tự đúng (có giá trị ở bên phải).
Đây là một ví dụ tương đối đơn giản. Có thể có các dấu ngoặc đơn lồng nhau và sử dụng các toán tử NOT, v.v.
(CACOUNT=01 OR CACOUNT=02 OR CACOUNT=03)
AND Q4=1 AND NAME=TIMOTHY
Đây là mệnh đề WHERE sẽ giống như thế nào.
WHERE (
EXISTS (
SELECT 1 FROM MyVerticalTable b
WHERE b.Key=a.Key AND b.Key='CACOUNT' AND b.Value='01'
)
OR EXISTS (
SELECT 1 FROM MyVerticalTable b
WHERE b.Key=a.Key AND b.Key='CACOUNT' AND b.Value='02'
)
OR EXISTS (
SELECT 1 FROM MyVerticalTable b
WHERE b.Key=a.Key AND b.Key='CACOUNT' AND b.Value='03'
)
)
AND EXISTS (
SELECT 1 FROM MyVerticalTable b
WHERE b.Key=a.Key AND b.Key='Q4' AND b.Value='1'
)
AND EXISTS (
SELECT 1 FROM MyVerticalTable b
WHERE b.Key=a.Key AND b.Key='NAME' AND b.Value='TIMOTHY'
)
Không thể chỉ vào mệnh đề 'where'? – tzaman
Không, nó thực sự không thể nào cả. Không có cột có tên CACOUNT. Đó là một bảng dọc. –
bảng dọc là gì? – Andrey