sql - IF EXISTS 不返回正确的结果
问题描述
我必须检查我的 sql 表中的列是否有空值并打印“是”/“否”
DECLARE @columnName nvarchar(50)
SET @columnName = 'City'
IF EXISTS (SELECT 1 FROM rf.Country WHERE @columnName IS NULL)
BEGIN
PRINT 'Yes'
END
ELSE
BEGIN
PRINT 'No'
END
当我确定此列中有空值时,此查询返回“否”。我看到不允许在 WHERE 语句中使用 @var ,但我需要一种方法来循环遍历表中的所有列,并在每列包含 NULL 值时打印每列的结果。
解决方案
您需要安全地将值注入动态查询,然后执行:
DECLARE @ColumnName sysname; --synonym for nvarchar(128) NOT NULL
SET @ColumnName = N'City';
DECLARE @SQL nvarchar(MAX),
@CRLF nchar(2) = CHAR(13) + CHAR(10);
SET @SQL = N'IF EXISTS (SELECT 1 FROM rf.Country WHERE ' + QUOTENAME(@ColumnName) + N' IS NULL)' + @CRLF +
N' PRINT N''Yes'';' + @CRLF +
N'ELSE' + @CRLF +
N' PRINT N''No'';';
--PRINT @SQL; --Your debugging friend
EXEC sys.sp_executesql @SQL;
推荐阅读
- javascript - 函数返回中的 Firestore 查询
- android - 从毕加索加载图像时文本消失 - Android
- django - Django REST throwing [Errno 54] Connection reset by peer and Bad Request
- node.js - 在数组数据中插入字符
- python - 为什么使用 copy() 时字符串和数组的处理方式不同?
- vim - VIM 大写自动补全
- android - 有没有一种方法可以知道我应该向用户请求哪些权限才能让 Google Play 接受我的应用程序?
- python - 在多个文件上应用 luigi 管道
- django-rest-framework - 从 Django Rest Framework 导入 format_suffix_patterns 时出错
- mysql - Sequelize:如何检查表中是否存在子字符串