Tag: sql

为什么(以及如何)使用master..spt_values分隔列?

对问题“将一列分割成多行”的答案进行了质疑,我在这里重写为[1]。 Type = 'P'含义是什么(以及为什么使用未logging的master..spt_values来分割列)? 它有什么好处? [1] CREATE TABLE dbo.Table1 ( Col1 CHAR(1), Col2 CHAR(1), Col3 CHAR(1), Col4 VARCHAR(50) ) GO INSERT INTO dbo.Table1 VALUES ('A','B','C','1,2,3') GO INSERT INTO dbo.Table1 VALUES ('D','E','F','6,7,8,9') GO SELECT T.col1, RIGHT(LEFT(T.col4,Number-1), CHARINDEX(',',REVERSE(LEFT(','+T.col4,Number-1)))) FROM master..spt_values, table1 T WHERE Type = 'P' AND Number BETWEEN 1 AND LEN(T.col4)+1 AND (SUBSTRING(T.col4,Number,1) = ',' — […]

SQL:多次重复一个结果行,并对行进行编号

我有一个像这样的结果的SQL查询: value | count ——+—— foo | 1 bar | 3 baz | 2 现在我想扩大这个,使得每一行count大于1的行多次出现。 我也需要这些行进行编号。 所以我会得到: value | count | index ——+——-+—— foo | 1 | 1 bar | 3 | 1 bar | 3 | 2 bar | 3 | 3 baz | 2 | 1 baz | 2 | 2 我必须在所有主要数据库(Oracle,SQL Server,MySQL,PostgreSQL等等)上进行这项工作。 […]

为什么null不等于null false

我正在阅读这篇文章: 在SQL中获取null == null 而共识是,当试图testing两个(可空)sql列的平等时,正确的做法是: where ((A=B) OR (A IS NULL AND B IS NULL)) 当A和B为NULL时,(A = B)仍然返回FALSE,因为NULL不等于NULL。 这就是为什么额外的检查是必需的。 什么时候testing不平等? 从上面的讨论来看,这让我想到,为了testing不平等,我需要做一些事情: WHERE ((A <> B) OR (A IS NOT NULL AND B IS NULL) OR (A IS NULL AND B IS NOT NULL)) 但是,我注意到,这是没有必要的(至less不是在informix 11.5),我可以这样做: where (A<>B) 如果A和B是NULL,则返回FALSE。 如果NULL不等于NULL,那么不应该返回TRUE? 编辑 这些都是很好的答案,但我想我的问题有点含糊。 请允许我改述一下: 鉴于A或B可以是NULL,是否足以检查它们的不等式 where (A<>B) […]

PostgreSQL函数中语言sql和语言plpgsql的区别

在数据库开发中是非常新的,所以我对我的下面的例子有一些怀疑: 函数f1() – 语言sql create or replace function f1(istr varchar) returns text as $$ select 'hello! '::varchar || istr; $$ language sql; 函数f2() – 语言plpgsql create or replace function f2(istr varchar) returns text as $$ begin select 'hello! '::varchar || istr; end; $$ language plpgsql; 这两个函数可以被称为select f1('world')或select f2('world') 。 如果我调用select f1('world') , 输出将是: `hello! world` […]

写一个有两位小数的SQL服务器

你如何写一个数字有两位小数的sql服务器?

使用pdo通过php和linux连接到mssql

我正在尝试使用下面的代码来build立一个新的PDO连接。 new PDO("mssql:driver=????;Server={$serverName};Database={$databaseName}", $username, $password, array(PDO::ATTR_PERSISTENT => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); 我不确定使用什么驱动程序? 或者如何安装它们。 我可以使用PHP中的mssql_connect函数完全正确地连接,但是我想要使用PDO库。 请让我知道,如果你有一个想法如何解决我的问题,或者我怎么能更好地提出我的问题? 我的php.ini设置为mssql是: ssql MSSQL支持启用 活动持久链接0 活动链接1 库版本FreeTDS 指令本地价值主值 mssql.allow_persistent On On mssql.batchsize 0 0 mssql.charset没有值没有值 mssql.compatability_mode关关 mssql.connect_timeout 5 5 mssql.datetimeconvert打开 mssql.max_links无限制无限 mssql.max_persistent无限制无限制 mssql.max_procs无限制无限制 mssql.min_error_severity 10 10 mssql.min_message_severity 10 10 mssql.secure_connectionclosures mssql.textlimit服务器默认服务器默认 mssql.textsize服务器默认服务器默认 mssql.timeout 60 60 谢谢

如何与工会订购

当数据来自多个select并将其联合在一起时,是否有可能进行sorting Select id,name,age From Student Where age < 15 Union Select id,name,age From Student Where Name like "%a%" 我怎样才能命名这个查询的名字。 有人说你可以查询看起来像这样。 Select id,name,age From Student Where age < 15 or name like "%a%" Order by name 但在这种情况下,我只是忽略这个解决scheme。 先谢谢你。

使用MySQL空间扩展来select圆内的点

我有一个名为flags的表,其中包含一个称为coordinates的列,充满了MySQL的“点”。 我需要执行一个查询,根据100米半径的经度和纬度位置获得一个圆圈内的所有标志。 从使用的angular度来看,这是基于用户的位置。 例如,手机会给用户的经纬度位置,然后将其传递给API的这一部分。 然后由API在用户周围创build一个半径为100米的不可见圆圈,然后返回此圆圈中的标志。 这是API的这一部分我不知道如何创build,因为我不确定如何使用SQL来创build这个不可见的圆,并只在这个半径内select点。 这可能吗? 有没有一个MySQL的空间function ,可以帮助我做到这一点? 我相信Buffer()函数可以做到这一点,但我找不到任何文档如何使用它(例如SQL)。 理想情况下,我需要一个答案,告诉我如何使用这个function或最接近它。 在将这些坐标存储为地理空间点的地方,我应该使用地理空间函数来做我要求的最大效率。 标志表: ID 坐标 名称 示例行: 1 | [几何 – 25B] | Tenacy AB 旗标表有经纬度位置和东,北(UTM) 用户的位置只是标准的纬度/经度,但我有一个库可以将此位置转换为UTM

在oracle中使用LISTAGG来返回不同的值

我正在尝试使用Oracle中的LISTAGG函数。 我想只获得该列的不同值。 有没有一种方法可以在不创build函数或过程的情况下获得唯一的值? col1 col2 Created_by 1 2史密斯 1 2约翰 1 3 Ajay 1 4 Ram 1 5杰克 我需要selectcol1和col2的LISTAGG (不考虑第3列)。 当我这样做,我得到这样的结果LISTAGG : [2,2,3,4,5] 我需要在这里删除重复的“2” 我只需要col1与col1不同的值。

什么是涵盖索引?

我刚刚在一些数据库讨论中听到了涵盖索引的术语 – 这是什么意思?