Sybase:如何使用"选择进入"声明,如果我不确定表是否总是有行

时间:2015-03-10 10:47:23

标签: sql sybase-ase

我需要使用select into声明:

查询

Select * into table2 from table1

如果table1中有行,则此语句可以正常工作。但是,在我的情况下,有时我可能在table1中有行,而有时我不会。

有关如何处理此类案件的任何想法吗?我的数据库是Sybase

3 个答案:

答案 0 :(得分:0)

为什么不检查是否有任何数据可以这样开始:

if exists (select * from table1)
    Select * into table2 from table1

答案 1 :(得分:0)

您可以使用IF语句和COUNT函数来检查表中是否存在行。

IF ((SELECT COUNT(*) FROM Table1) >= 1)
BEGIN 
   SELECT * INTO table2 FROM table1
END

或者您可以使用EXISTS条件。

IF EXISTS (SELECT * FROM Table1)
BEGIN
    SELECT * INTO table2 FROM table1
END

如果您说不能使用IF声明,您可以尝试这样的事情:

INSERT * INTO Table2 (col1, col2, col3)
SELECT (CASE WHEN col1 IS NOT NULL THEN col1 ELSE NULL END) AS col1,
       (CASE WHEN col2 IS NOT NULL THEN col1 ELSE NULL END) AS col2,
       (CASE WHEN col2 IS NOT NULL THEN col1 ELSE NULL END) AS col3
FROM Table1

答案 2 :(得分:0)

你必须使用动态sql:

if object_id("table1") is not null
EXEC ("Select * into table2 from table1")

此代码将通过编译,上面没有一个。

其他2个条件成功:

1)选项select into/bulkcopy/pllsort必须在

2)我认为自sybase 15.7 sp101

以来已添加此功能

==>选择@@ version以检查服务器版本