sql - 如果文件路径为空或文件不存在,如何不更新列?
问题描述
我正在用这个更新一列:
UPDATE myTable
SET myFile = (SELECT myFile.BulkColumn FROM OPENROWSET(BULK N'D:\Text3.txt', SINGLE_BLOB) AS myFile)
WHERE id = 2
如果文件 Text3.txt 不存在,如何不更新列并将旧文件保留在那里?一些喜欢:
SET myFile = COALESCE((SELECT myFile.BulkColumn FROM OPENROWSET(BULK N'D:\Text3.txt', SINGLE_BLOB) AS myFile), myFile)
WHERE id = 2
解决方案
使用 Master.dbo.xp_fileexist 检查文件是否存在
Create Table #temp
(
File_Exists bit,
File_is_Directory int,
Parent_Directory_Exists bit
)
INSERT INTO #temp
EXEC Master.dbo.xp_fileexist N'D:\Text3.txt'
--1 means exists while 0 means not exists
IF 1=(SELECT File_Exists FROM #temp)
BEGIN
UPDATE myTable
SET myFile = (SELECT myFile.BulkColumn FROM OPENROWSET(BULK N'D:\Text3.txt', SINGLE_BLOB) AS myFile)
WHERE id = 2
SELECT * FROM myTable
END
ELSE
BEGIN
SELECT * FROM myTable
END
DROP table #temp
推荐阅读
- google-apps-script - 使用 Appscript 为 PDF 添加水印
- maven - Spark-Shell 不能使用 Netlib-Java
- sql - 下拉列表显示 0
- python - Pandas 中的多重索引导致异常
- python - 为什么我收到“isupper 未定义”错误?
- c# - 为什么我在 IncrementalRefresh 更改消息中没有收到标签 271 大小的条目
- vba - 在 vba excel 中使用 COUNTIF 的 DATE 标准的字符串值
- random - MT19937 不会通过将种子值保持为常数来重现相同的伪随机序列
- mysql - 无法添加或更新子行 MySQL 错误 1452
- git - 如何提及一次以使用 gitignore 忽略来自不同目录的 2 个同名文件夹?