sql - SQL Server 在条件中使用文本文件
问题描述
我有一个似乎应该是一个简单的问题,但找不到一个简单的答案。我只有“读”权限,没有“写”权限。
我想创建一个简单的查询,例如: Select a, b, c from x where a in (c:\myfilename.txt)
考虑到我的限制(只读),这可能吗?
解决方案
我在评论中发布的 Excel 选项的格式更好一点(同样,这不是理想的或最好的,但它有效)。它很糟糕而且很脏,但是在缺少权限或只是为了快速关闭时可以工作。
在 Excel 中,将其复制到数据同一行的单元格中(并将 A1 替换为数据列):
="Select '" &A1&"' AS FieldName UNION ALL"
注意:如果您有多个列,您也可以这样做,只需为多个列编辑与此类似的公式:
="Select '" &A1&"' AS FieldName, '"&B1&"' as FieldName2 UNION ALL"
然后将这个公式一直复制到文件中的每一行。
然后复制公式的结果,应该如下所示:
Select '1' AS FieldName UNION ALL
Select '2' AS FieldName UNION ALL
Select '3' AS FieldName UNION ALL
(为了在从 Excel 复制到 SQL 时使文本更小,“AS FieldName”可能只是“AS F”,或者您可以完全关闭它(如果处理一个字段)。如果处理很多行可以加快速度向上复制/粘贴一点,让你的文件更小,以便你的 SQL 脚本。一段时间后,这几个字符加起来。
然后删除最后一个 UNION ALL(否则它将不是有效的 SQL)。
然后你可以在你的代码中这样使用它:
Select a, b, c
from x
where a in (
Select '1' AS FieldName UNION ALL
Select '2' AS FieldName UNION ALL
Select '3' AS FieldName
)
如果您有大量数据,您可以执行类似的操作以使其更易于阅读(但脚本顶部仍有大量数据)。
-- OR USE temp table instead of table variable
DECLARE @TableData AS TABLE (
FieldValue VARCHAR(50)
)
INSERT INTO @TableData
Select '1' AS FieldName UNION ALL
Select '2' AS FieldName UNION ALL
Select '3' AS FieldName
Select a, b, c
from x
where a in (
SELECT FieldValue
FROM @TableData
)
推荐阅读
- c++ - C++ 中 If constexpr 的行为
- sanity - 你的项目需要sanity studio吗?
- python - 树。删除节点,但将其子节点传递给父节点
- python - 将“nan”添加到 numpy 直方图 python
- python-3.x - numpy 数组的元素比较以产生输出数组
- java - 如何使用 Junit5 接收 LocalDate 值作为参数?
- r - 着色多个点的ggplot问题
- common-lisp - SBCL 中的“explicit-check”声明标识符是什么意思?
- android - setTargetFragment 被贬低 PreferenceDialogFragmentCompat
- bash - 如何在 BASH 脚本中读取 .ini 文件以搜索文件中的字符串?