我需要在数据库中的每个单元格中用NULL替换空格。 SQL Server 2008 R2。我正在寻找高效的东西,但看起来像光标只是方式?如何在数据库中执行查询foreach单元格
回答
光标从不答案:)
ypercube做了最困难的部分。您需要获取该信息并遍历它,为每个表中的每列执行更新语句。你可以用WHILE语句来做到这一点。下面是你如何做到这一点的UNTESTED示例:
--Set database to use
USE [MyDatabase];
GO
--Create table variable to hold table/column pairs
DECLARE @table TABLE (
[Key] BIGINT PRIMARY KEY IDENTITY (1, 1),
[TABLE_NAME] VARCHAR(100),
[COLUMN_NAME] VARCHAR(100)
);
--Populate table variable
INSERT INTO @table ([TABLE_NAME], [COLUMN_NAME])
SELECT [TABLE_NAME], [COLUMN_NAME]
FROM MyDatabase.INFORMATION_SCHEMA.COLUMNS
WHERE [TABLE_SCHEMA] = 'dbo'
AND [IS_NULLABLE] = 'YES';
--Initialize counting variables
DECLARE @counter BIGINT = 1;
DECLARE @max BIGINT = (SELECT COUNT(1) FROM @table);
--Iterate through each pair
WHILE @counter <= @max
BEGIN
--Assign the current pair values to variables
DECLARE @TableName VARCHAR(100), @ColumnName VARCHAR(100);
SELECT @TableName = [TABLE_NAME], @ColumnName = [COLUMN_NAME]
FROM @table
WHERE [Key] = @counter;
--Execute dynamic SQL
EXEC
(
'UPDATE [' + @TableName + ']' +
'SET [' + @ColumnName + '] = NULL' +
'WHERE RTRIM([' + @ColumnName + ']) = '''';'
);
--Increment the counter
SET @counter = @counter + 1;
END
太好笑了。我没有检查过SO,并在1小时前写下了相同的脚本。谢谢@ypercube – user194076
没问题!乐意效劳 :) – JOpuckman
我想这取决于你如何定义空白。以下的工作?
update mytable set mycolumn = null where len(rtrim(ltrim(mycolumn))) = 0
我需要一个查询来完成它在每个单元格和每个表中。不只是一列 – user194076
首先发现,可为空和CHAR
型或VARCHAR
的所有表和列,使用INFORMATION_SCHEMA:
SELECT TABLE_NAME, COLUMN_NAME
FROM MyDatabase.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'dbo'
AND IS_NULLABLE = 'YES'
- 1. 数据库查询执行
- 2. 如何在Rails中的数据库连接上执行查询?
- 3. 查询在数据库中执行,但在WebService中执行时不执行
- 4. 在查询执行后数据库内部不可见表格
- 5. 如何在单独的单元格值上重复执行Excel SQL查询
- 6. 对单词数组执行数据库查询
- 7. 如何在Groovy中执行gstring数据库查询中的函数
- 8. 如何根据表单值执行查询并显示数据库结果php
- 9. 数据库查询foreach循环c#
- 10. 执行用Excel编写的SQL查询R中的单元格
- 11. Postgresql:如何执行交叉数据库查询
- 12. 如何有效地执行数据库初始查询?
- 13. 在访问数据库表中的单个查询中执行多个更新
- 14. 在云中执行查询“In”选项NoSQL类型数据库
- 15. 无法在SQL Azure中执行跨数据库查询
- 16. 立即在多个数据库中执行MySQL查询
- 17. 使用日期时间在SQL数据库中执行查询
- 18. 在Android中执行从文件到SQLlite数据库的查询?
- 19. 在格式化表达式中执行数据库查找
- 20. 如何减少我在Oracle数据库中查询的执行时间?
- 21. 如何在Android的Sqlite数据库中使用where子句执行SELECT查询?
- 22. 如何在核心数据中执行此MySQL查询?
- 23. 如何为XML数据执行SQL查询(在SQLServer中)?
- 24. 执行SQL删除查询foreach user_id
- 25. 如何在Visual Studio中执行单元测试后删除测试数据库
- 26. 如何在sas数据库中检索单元格
- 27. 我应该避免在foreach循环中查询数据库吗?
- 28. 如何查看执行计划Oracle数据库在Java中
- 29. 如何在视图中执行过滤的数据库查找?
- 30. 如何设计Redis数据结构以执行类似于redis中数据库查询的查询?
数据库服务器中每个数据库的每个表的每个(char)列的每一行? –
@ypercube只有一个数据库 – user194076
您必须使用'INFORMATION_SCHEMA'和动态SQL。 –