我需要使用select into
声明:
查询
Select * into table2 from table1
如果table1中有行,则此语句可以正常工作。但是,在我的情况下,有时我可能在table1中有行,而有时我不会。
有关如何处理此类案件的任何想法吗?我的数据库是Sybase
答案 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以检查服务器版本