CASE WHEN表达式中的连接

时间:2017-08-23 14:28:16

标签: sql oracle concatenation case string-concatenation

我想检查要创建的所有int((record[2])[8:10]),int((record[2])[10:13]), float(record[6]), float(record[7]), ValueError: could not convert string to float: 是否都存在。如果它们已经存在,我们需要先放弃它们。

这是我创建的逻辑,这是我第一次table_name使用CONCAT

此处的错误是CASE WHEN无法读取CONCAT

还有其他方法可以检查表名是否存在?或者有没有办法继续这个逻辑,并建议解决这个问题?

CASE WHEN

2 个答案:

答案 0 :(得分:0)

使用IF..THEN..ELSE代替

此外,substr(to_char(sysdate,'ddmonyy'),3,5) = to_char(sysdate,'monyy')

SET SERVEROUTPUT ON;    
DECLARE 
    v_drop_table VARCHAR2(50); 
    v_go int := 0;
BEGIN
    FOR rec IN
        (
        SELECT lower(table_name) as table_name
        FROM user_tables 
        WHERE LOWER(table_name) LIKE 'mpiat_after_bs_%'
        )
    LOOP  
        v_go: = 0;
        IF rec.table_name =  'mpiat_after_bs_' || to_char(sysdate,'monyy') || '_t'
        THEN 
            v_drop_table := 'DROP TABLE ' || rec.table_name;
            v_go: = 1;
        ELSEIF rec.table_name =  'mpiat_after_bs_ebi_' || to_char(sysdate,'monyy') || '_t'
        THEN
            v_drop_table := 'DROP TABLE ' || rec.table_name;
            v_go: = 1;
        END IF; 

        IF v_go = 1
        THEN
            DBMS_OUTPUT.PUT_LINE(v_drop_table);
            EXECUTE IMMEDIATE v_drop_table;
        END IF;
    END LOOP;
END;

注意你们中的任何一个常规回答者都会发现拼写错误,请随时纠正我

答案 1 :(得分:0)

在FOR rec IN

之后的SELECT部分​​使用以下内容
SELECT LOWER(table_name) AS table_name