SQL Server在条件中使用文本文件

问题描述 投票:0回答:1

我有一个似乎应该是一个简单的问题,但找不到一个简单的答案。我只有“读”特权,而不是“写”。

我想创建一个简单的查询,例如:从x中选择a,b,c,其中a(c:\ myfilename.txt)

考虑到我的限制(只读),这可能吗?

sql sql-server conditional-statements
1个回答
2
投票

我在评论中发布的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
)
© www.soinside.com 2019 - 2024. All rights reserved.