我有一个似乎应该是一个简单的问题,但找不到一个简单的答案。我只有“读”特权,而不是“写”。
我想创建一个简单的查询,例如:从x中选择a,b,c,其中a(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
)