天道酬勤,学无止境

sql

How do I resolve this "Access is denied" error which occurs when using xp_cmdshell in Microsoft SQL?

问题 这是我的整个例程: Declare @AttFileType as char(5), @HQCo as int, @FormName as Varchar(15), @KeyID as VarChar(10), @UniqueID as uniqueidentifier, @FilePath as Varchar(100), @StringCommand as Varchar(200) Declare @AttID as int DECLARE @cmd as VARCHAR(500) DECLARE @cmd2 as VARCHAR(500) CREATE TABLE #tmp(eFileName VARCHAR(100)); INSERT INTO #tmp EXEC xp_cmdshell 'dir /B C:\Users\*****\Desktop\Test_Images'; Declare @FileName varchar(100) Set @UniqueID = NewID() While (Select Count(*) From #tmp where eFileName is not null) > 0 Begin Select Top 1 @FileName = eFileName From #tmp Set @FilePath = 'C:\Users\*

2022-07-11 09:54:59    分类:技术分享    sql   sql-server   xp-cmdshell

SELECT columns from a variable in Python PYODBC

问题 def data_extract1(): column_list1 = ["column1","column2"] c.execute ('SELECT column_list1 FROM myBD' ) for row in c.fetchall(): print (row) 回答1 您可以使用format()和join()将查询字符串中的column_list1替换为所需的列。 c.execute('SELECT {} FROM myBD'.format(", ".join(column_list1))) ", ".join(column_list1)从您的列列表中创建一个逗号分隔的字符串。 format()将查询字符串中的{}替换为该新字符串

2022-07-11 09:52:09    分类:技术分享    python   sql   select   odbc

order definition for comparisons in SQL ROW subqueries?

问题 我想知道当使用比较运算符(例如>或>= )执行行子查询时,比较顺序是使用词典(即字典)顺序定义还是按元素定义? 也就是说,对于ROW (A, B) ,应该 (79, 48) > (75, 52) 在WHERE子句的行查询中是TRUE (字典)还是FALSE (元素)? 我在 PostgreSQL 中对此进行了测试,似乎它使用的是字典顺序,即(79, 48) > (75, 52)是TRUE ,因为79 > 75并且第二个组件因此无关紧要。 环顾四周,似乎 MySQL 也是这种情况:MySQL 行子查询比较问题,而 MySQL 文档似乎在这一点上令人困惑。 搜索postgresql row subquery并没有显示太多关于比较顺序的信息。 虽然字典顺序从计算机科学的角度来看是有意义的,但对于数据库用户来说可能看起来有点奇怪,因为行的顺序现在取决于您在 SQL 中首先列出的列。 例如,使用字典顺序,我们应该有: (52, 75) > (48, 79) 对于ROW (B,A) 。 比较相同的行,顺序正好相反,因为B列首先列出。 我的问题是: 这种行为(在行查询中使用字典顺序)是来自 SQL 标准/跨供应商还是特定于实现? 有这方面的参考吗? 回答1 这在Postgres手册的行构造函数比较一章中有记录: 对于< 、 <= 、 >和>=情况,行元素从左到右进行比较

2022-07-11 09:48:36    分类:技术分享    mysql   sql   postgresql   subquery   lexicographic

Generate a parent-child hierarchy from table with levels paths

问题 我设法在这样的表中转换了一些不可读的数据。 SQL表表示一个多父平面层次结构。 问题是,我怎样才能生成一个正常的参差不齐的 sql parent-child层次结构: ID | Element | Parent ID | Element | Parent ID | Element | Parent级基于以下附加的级别和结构? 回答1 您可以创建一个具有层次结构和自动递增 ID 的新表,如下所示: create table hierarchy ( id int not null identity (1,1) primary key, element varchar(100), parent int ); 然后,您将首先向其中添加 1 级元素,因为它们没有父级: insert into hierarchy (element, parent) select distinct f.level1, null from flat f; 由于您现在已经为这些元素生成了id值,因此您可以添加下一个级别,如下所示: insert into hierarchy (element, parent) select distinct f.level2, h1.id from hierarchy h1 inner join flat f on f.level1 = h1.element where h1

2022-07-11 09:47:45    分类:技术分享    sql   tsql   parent-child   hierarchy

SQL join on equal or closest date

问题 我有两张桌子 表 a(每个 id 1 行) id,observation_date a,2015-03-01 b,2015-03-03 c,2015-03-05 表 b(每个 id 多行,但每个 id/日期组合是唯一的) id, insert_date, value a,2015-02-28,x1 a,2015-03-01,x2 a,2015-03-02,x3 b,2015-02-28,x4 b,2015-03-01,x5 b,2015-03-02,x6 c,2015-02-28,x7 c,2015-03-01,x8 c,2015-03-02,x9 c,2015-03-03,x10 c,2015-03-04,x11 我想在 id 上加入这些表,而不是加入我想加入表 b 中与表 a 中的观察日期相关的最近插入日期的日期(其中日期在同一天之前或同一天)作为观察日期) 即输出应该是: id,observation_date,insert_date,value a,2015-03-01,2015-03-01,x2 b,2015-03-03,2015-03-02,x6 c,2015-03-05,2015-03-04,x11 回答1 执行此操作的一种典型方法是使用相关子查询,每个值一个: select a.*, (select b.date from b where b.id = a

2022-07-11 09:47:14    分类:技术分享    sql   date   join   conditional   nearest-neighbor

YEAR gives error

问题 pgAdmin III 总是在年报错 错误:函数年(日期)不存在第 1 行:选择年(geboortedatum)作为 date_part .............................^ ^^^………… 提示:没有函数匹配给定的名称和参数类型。 您可能需要添加显式类型转换。 ********** 错误 ********** 错误:函数年(日期)不存在 SQL 状态:42883 提示:没有函数匹配给定的名称和参数类型。 您可能需要添加显式类型转换。 字符:8 我可以得到我需要的整个日期,但我只需要有人可以帮助我的年份,它需要是桌子上最年轻的年份。 回答1 正如您提到的 pgAdmin,我假设您使用的是 Postgres,因此您需要编写这样的代码(使用EXTRACT结构): SELECT EXTRACT(YEAR FROM TIMESTAMP '2001-02-16 20:38:40'); datetime 函数的详细文档

2022-07-11 09:41:26    分类:技术分享    sql   postgresql   date

How is query working at Teradata?

问题 我尝试在 teradata 上运行以下查询,结果如预期: select column1 as c1Alias from my_table where column2 in ( c1Alias , 10 , 20 , 30) ; 但我尝试在 HIVE 上运行相同的查询,它抛出异常,如下所示: FAILED: SemanticException [Error 10004]: Line 1:44 Invalid table alias or column reference 'c1Alias': (possible column names are: .......) 我对为什么它在 HIVE 上失败并不感到惊讶,但对它在 Teradata 上的工作方式感到惊讶。 据我了解,子句按 WHERE >> SELECT 的顺序执行。 显然,在 SELECT 子句中生成的别名不能在 WHERE 子句中使用。 如果我在这里错了,请纠正我。 我真的很想知道它在 teradata 中是如何工作的? 回答1 你是对的,逻辑上任何 SELECT 都按以下顺序处理: 从在哪里通过...分组拥有 OLAP 函数合格创建 SELECT 列列表样本订购方式 除了专有的 QUALIFY/SAMPLE 之外,每个 DBMS 都会做同样的事情。 当您将过滤器添加到 WHERE 条件时,尚未创建列列表

2022-07-11 09:40:10    分类:技术分享    sql   hive   teradata

Filter an unfiltered table against a whitelist table

问题 介绍 嗨,我目前正在尝试构建一个基于 MySQL 的过滤系统,我现在遇到了一个问题,如何解决它。 我在下面的示例表链接中提供了两个表,一个包含白名单项目的白名单表和一个未排序表,它将根据白名单检查项目的列表。 PS:白名单不时变化 问题 如果只是在三列完全匹配的情况下进行匹配,这将是一项非常容易的工作,但问题是,如果白名单中的列为 NULL,则意味着它是通配符(此行为可以更改,如果有人可以提供更好的方法),这意味着该列中的任何值都被接受。 在接受条目之前,所有三列都必须通过。 这就是让我陷入困境的地方=\ 例子 样本表:http://rextester.com/HMYT21528或以下(相同) -- unsorted data create table unsorted ( ID int AUTO_INCREMENT, country char(10) null, region char(10) null, item char(10), PRIMARY KEY (ID) ); insert into unsorted(country, region, item) VALUES (null, null, "Apple"), (null, "East", "Apple"), (null, "West", "Apple"), ("US", null, "Apple"), ("US"

2022-05-17 05:33:04    分类:技术分享    mysql   sql   filtering

Compare strings of text between two tables in a database or locally

问题 编辑:SQL 不适用于此。 我刚刚发现了 Solr/Sphinx,它似乎是解决这个问题的正确工具,所以如果你知道 Solr 或 Sphinx,我很想收到你的来信。 基本上,我有一个带有专利信息的 .tsv 和一个带有产品名称的 .csv。 我需要将专利列的每一行与产品名称进行匹配,并在新的 .csv 列中提取出现的情况。 您可以向下滚动并查看最后的示例。 原始问题: 这里的 SQL 新手请多多包涵:)。 我不知道该怎么做: 我的数据库: mysql> SHOW TABLES; +-----------------------+ | Tables_in_prodpatdb | +-----------------------+ | assignee | | patents | | patent_info | | products | +-----------------------+ mysql> DESCRIBE patents; +-------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+-------------+------+-----+---------+-------+ |

2022-05-17 05:20:38    分类:技术分享    mysql   sql   solr   full-text-search   sphinx

Concatenate values of field depending on text selection Oracle SQL

问题 我有一个包含 A 和 B 列的表 a_x,A 列采用 CLOB 格式,B 列编号(10): A | B -----------------------------|------- atveroeosipsumloremipsumdolor| 1 stetclitakasdtest | 2 noseatakimataatveroeosipsum | 3 loremipsumdolor | 4 consetetursadipscingelitr | 5 我想制作这张表,以便找出哪个 ID 与某些子字符串一起使用: A | IDs -----------------------------|------- atveroeosipsum | 1,3 test | 2 stetclitakasd | 2 noseatakimata | 3 loremipsumdolor | 1,4 consetetursadipscingelitr | 5 我尝试了以下代码: create table a_y as select a from a_x where a contains('atveroeosipsum', 'test' , 'stetclitakasd', 'noseatakimata' , 'loremipsumdolor', 'consetetursadipscingelitr')

2022-05-17 05:01:11    分类:技术分享    sql   oracle11g   grouping   string-concatenation   text-search