我有一张名为a的表。一些单元格在许多列中包含字符串“Empty”。我想找到这个专栏。你能救我吗?。
答案 0 :(得分:1)
使用<button type="submit" id="submitBtn">submit</button>
$("#submitBtn").on('click',function(event){
var value = $("#concept_name").val();
if(value.length > 50){
alert("Maximum limit is 50 character");
event.preventDefault();
}
});
运算符:
LIKE
答案 1 :(得分:1)
在sql server中,你可以获取表的对象id,然后使用你可以获取列的对象id。在这种情况下,它将如下:
第1步:首先获取表格
的对象IDselect * from sys.tables order by name
第2步:现在获取表格的列并在其中搜索:
select * from a where 'Empty' in (select name from sys.columns where object_id =1977058079)
注意:object_id是您在相关表格
的第一步中获取的内容答案 2 :(得分:1)
我建议动态SQL
- 首先,您将变量@TableName
设置为实际表格的名称。
DECLARE @TableName VARCHAR(100)='a';
- 以下语句将创建所有列的列表,其数据类型包含单词&#34; char&#34; (其他人不应该持有值Empty
)
DECLARE @ColList VARCHAR(MAX)=
STUFF(
(
SELECT ' OR ' + COLUMN_NAME + ' LIKE ''%empty%'''
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME=@TableName AND DATA_TYPE LIKE '%char%'
FOR XML PATH('')
),1,4,'');
- 此语句构建命令
DECLARE @cmd VARCHAR(MAX)=
(
SELECT 'SELECT * FROM [' + @TableName + '] WHERE ' + @ColList
);
- 在这里你可以看到命令
PRINT @cmd;
- 这里执行
EXEC(@cmd);
答案 3 :(得分:1)
你可以在动态查询的帮助下使用unpivot来完成它,这里我已经为你做了一个工作示例,你可能需要做一些修改,以便将下面的psedo代码放在你的工作中。
使用了样本表结构:
create table ColTest
(
name1 varchar(10),
name2 varchar(10),
name3 varchar(10),
name4 varchar(10)
)
insert into ColTest values ('sdas','asdasda','ewrewr','erefds')
insert into ColTest values ('sdas','asdasda','EMPTY','erefds')
insert into ColTest values ('EMPTY','asdasda','ewrewr','erefds')
DECLARE @table_name SYSNAME
SELECT @table_name = 'ColTest'
DECLARE @tmpTable SYSNAME
SELECT @tmpTable = 'ColTest2'
DECLARE @SQL NVARCHAR(MAX)
SELECT @SQL = '
SELECT * into
' + @tmpTable + '
FROM ' + @table_name + '
UNPIVOT (
cell_value FOR column_name IN (
' + STUFF((
SELECT ', [' + c.name + ']'
FROM sys.columns c WITH(NOLOCK)
LEFT JOIN (
SELECT i.[object_id], i.column_id
FROM sys.index_columns i WITH(NOLOCK)
WHERE i.index_id = 1
) i ON c.[object_id] = i.[object_id] AND c.column_id = i.column_id
WHERE c.[object_id] = OBJECT_ID(@table_name)
AND i.[object_id] IS NULL
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '') + '
)
) unpiv'
PRINT @SQL
EXEC sys.sp_executesql @SQL
select * from ColTest2 where cell_value = 'EMPTY'
答案 4 :(得分:1)
尝试此动态查询,它将检查包含字符数据的所有列,并列出具有“空”字样的列。
DECLARE @SearchText VARCHAR(50) = 'Empty'
DECLARE @sql NVARCHAR(MAX) = 'SELECT '
SELECT @sql = @sql + 'MAX(CASE WHEN ' + c.COLUMN_NAME + ' LIKE ''%'+ @SearchText +'%'' THEN ''' + c.COLUMN_NAME +''' ELSE '''' END) + '','' + '
FROM INFORMATION_SCHEMA.COLUMNS c WHERE c.TABLE_SCHEMA = 'dbo' and c.TABLE_NAME = 'a'
AND c.DATA_TYPE IN ('varchar','char','nvarchar','nchar','sysname')
SET @sql = @sql + ''''' FROM dbo.a'
EXEC sys.sp_executesql @sql
希望这有帮助