在SQL Server(2008年),我有两列的全文索引,给他们打电话Table1.FirstNames和Table2.LastNames.在分析了一些查询之后,我想出了以下结果:
SELECT *
FROM (Table1 LEFT JOIN Table2 ON Table1.SomeKey=Table2.SomeKey)
WHERE CONTAINS(FirstNames, 'Bob') OR CONTAINS(LastNames, 'Bob')
Run Code Online (Sandbox Code Playgroud)
=> 31 197ms
SELECT *
FROM (Table1 LEFT JOIN Table2 ON Table1.SomeKey=Table2.SomeKey)
WHERE (FirstNames LIKE '%Bob%') OR CONTAINS(LastNames, 'Bob')
Run Code Online (Sandbox Code Playgroud)
=> 1941ms
SELECT *
FROM (Table1 LEFT JOIN Table2 ON Table1.SomeKey=Table2.SomeKey)
WHERE CONTAINS(FirstNames, 'Bob') OR LastNames LIKE '%Bob%'
Run Code Online (Sandbox Code Playgroud)
=> 3201ms
SELECT *
FROM (Table1 LEFT JOIN Table2 ON Table1.SomeKey=Table2.SomeKey)
WHERE CONTAINS(FirstNames, 'Bob')
Run Code Online (Sandbox Code Playgroud)
=> 565ms
SELECT *
FROM (Table1 LEFT JOIN …Run Code Online (Sandbox Code Playgroud) 我试图使用CONCAT与SQL连接3个字段,并得到以下错误:
调用本机函数'CONCAT'时参数不正确
查询如下
SELECT CONCAT(guests.lastname,', ',guests.firstname', ',guests.passport) AS display
FROM guests
WHERE guests.uuid = '1'
Run Code Online (Sandbox Code Playgroud)
如何在SQL中连接两个以上的字段?
我正试图绕过一个查询而我无法理解它.如果有人给我指针,我将不胜感激.作为我想要实现的一个简单示例,我在数据库中有这些记录
Score|Ranking
-------------
100 |0
200 |0
300 |0
Run Code Online (Sandbox Code Playgroud)
我希望排名字段包含1,2,3根据谁获得最高分,所以结果应该是:
Score|Ranking
-------------
100 |3
200 |2
300 |1
Run Code Online (Sandbox Code Playgroud)
目前,我正在为所有这些记录做下一个循环,但实际上这可能是几千 - 这可能需要永远!有没有人对魔术查询有一个想法,可以一次性做到这一点?
我有一个有趣的问题要解决.我的一位客户让我开发了一个库存分析程序,该程序具有近千年符号的近50年库存数据.我已经开发了一系列过滤器,可以在任何一天使用,看看是否有什么东西可以用于交易.
我们希望为每个库存的每天数据运行此过滤器.基本上是您的开始和结束日期类型报告.但是,每个符号需要每周过滤6分钟.我们计算大约40个小时左右来运行整个数据集的报告.
最重要的要求是我的客户能够在任何地方从任何计算机上做任何事情(他经常旅行),所以我们是基于浏览器的.
为了解决这个问题,我编写了一个运行此报告的异步方法,但应用程序池不活动计时器将终止该作业.我不想开始调整整个应用程序的超时以支持这一个报告(我们将做很多这样的事情,因为每个库存场景需要在我们的整个数据集上运行以进行分析才能用于积极交易).
有没有人对支持超长期异步过程的Web架构有任何一般想法或经验?
谢谢
我Persons在SQL Server 2008中有表.
我的目标是找到地址几乎相似的人.
地址与列描述state,town,street,house,apartment,postcode和phone.
由于某些州(非美国)和人为因素(地址错误等)存在某些特定差异,因此地址不会以相同的模式填充.
地址中最常见的错误
主要问题是数据不是相同的模式,因此很难找到类似的地址.
这种问题有什么算法吗?
提前致谢.
UPDATE
我必须从数据库中获取i18n文本.默认语言是英语,它包含所有内容的文本.但非英语语言不一定具有所有期望的翻译.如果某个实体/密钥的非英语翻译在数据库中不可用,那么我想让它返回英文文本.所以,英语是这里的后备语言.
i18n文本表看起来像这样(PostgreSQL方言):
CREATE TABLE translation (
id SERIAL PRIMARY KEY,
language_code CHAR(2) NOT NULL,
key VARCHAR(20) NOT NULL,
value TEXT NOT NULL,
CONSTRAINT translation_unique UNIQUE (language_code, key)
)
Run Code Online (Sandbox Code Playgroud)
数据如下所示:
INSERT INTO translation
(language_code, key, value)
VALUES
('en', 'foo', 'foo in English'),
('nl', 'foo', 'foo in Nederlands (Dutch)'),
('en', 'bar', 'bar in English')
Run Code Online (Sandbox Code Playgroud)
我想基本上做下面的伪SQL查询:
SELECT key, value
FROM translation
WHERE (language_code = 'nl' OR IF value IS NULL THEN language_code = 'en')
Run Code Online (Sandbox Code Playgroud)
(实际上,该'nl'值是参数化的)
这样它返回以下内容:
+-----+---------------------------+ …
只是为了澄清前面:我说的是联合几何,而不是SQL关键字UNION.
我正在尝试将Postgres中的一些空间数据与PostGIS一起移动到SQL Server 2008.直到我看到这样的语句之后才好了:
SELECT GeomUnion(the_geom) FROM some_table
Run Code Online (Sandbox Code Playgroud)
这个联合该列中的所有几何体并将其作为一个结果返回(类似于COUNT工作方式).据我所知,SQL Server只具有将STUnion一个几何与另一个几何结合的功能.有没有办法做类似于Postgres的方式?
如果它有帮助,该STUnion功能的工作方式如下:
SELECT first_geometry_column.STUnion(second_geometry_column) FROM some_table
Run Code Online (Sandbox Code Playgroud) 想象一下这样的表:
CREATE TABLE [dbo].[test](
[id] [uniqueidentifier] NULL,
[name] [varchar](50) NULL
)
GO
ALTER TABLE [dbo].[test] ADD CONSTRAINT [DF_test_id] DEFAULT (newsequentialid()) FOR [id]
GO
Run Code Online (Sandbox Code Playgroud)
使用如下所示的INSERT存储过程:
CREATE PROCEDURE [Insert_test]
@name as varchar(50),
@id as uniqueidentifier OUTPUT
AS
BEGIN
INSERT INTO test(
name
)
VALUES(
@name
)
END
Run Code Online (Sandbox Code Playgroud)
获取刚刚插入的GUID并将其作为输出参数返回的最佳方法是什么?
我需要使用VBA或Access SQL获取表的所有列名,并迭代它们进行验证,有没有人有解决方案,我搜索谷歌无济于事.
我使用了以下代码,但SQL中的DateTime字段表示为:
2005-04-08 00:00:00
Run Code Online (Sandbox Code Playgroud)
我也想要时间.我应该改变什么?
这是我的代码如下:
// Get the system date and time.
java.util.Date utilDate = new Date();
// Convert it to java.sql.Date
java.sql.Date date = new java.sql.Date(utilDate.getTime());
...
...
...
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setDate(1, date);
Run Code Online (Sandbox Code Playgroud) sql ×10
sql-server ×3
mysql ×2
algorithm ×1
asynchronous ×1
fallback ×1
java ×1
ms-access ×1
performance ×1
postgresql ×1
ranking ×1
spatial ×1
sql-update ×1
vba ×1
wcf ×1