小编Han*_*non的帖子

在选择上获取固定值

我需要做一个SELECT查询,在那里我得到“钱”字段的值。该字段实际上并不存在于数据库中。我只需要查询以固定值返回此字段;在这种情况下,以美元为单位的价值。

如何在SELECT语句中返回常量值?

mysql

21
推荐指数
1
解决办法
9万
查看次数

我应该对这个 NO JOIN PREDICATE 警告感到震惊吗?

我正在对性能不佳的存储过程的点点滴滴进行故障排除。程序的这一部分抛出了一个 NO JOIN PREDICATE 警告

select
    method = 
        case methoddescription 
            when 'blah' then 'Ethylene Oxide'
            when NULL then 'N/A'
            else methoddescription
        end,
    testmethod = 
        case methoddescription 
            when 'blah' then 'Biological Indicators'
            when NULL then 'N/A'
            else 'Dosimeter Reports'
        end,
    result = 
        case when l.res is null or l.res <> 1 then 'Failed'
        else 'Passed'
        end,
    datecomplete = COALESCE(CONVERT(varchar(10), NULL, 101),'N/A')
from db2.dbo.view ls
    join db1.dbo.table l
        on ls.id = l.id
    where item = '19003'
        and l.id = '732820'
Run Code Online (Sandbox Code Playgroud)

视图 ( …

sql-server execution-plan sql-server-2008-r2 warning

21
推荐指数
1
解决办法
5144
查看次数

这个语法是如何工作的?{fn CurDate()} 或 {fn Now()} 等

最近我浏览了一些为 SQL Server 2005 编写的相当老的存储过程,我注意到一些我不明白的东西。它似乎是某种类型的函数调用。

一个样品:

SELECT o.name, o.type_desc, o.create_date
FROM sys.objects o
WHERE o.create_date < {fn Now()} -1;
Run Code Online (Sandbox Code Playgroud)

这将显示所有行sys.objects有一个create_date前24小时前。

如果我显示此查询的执行计划,我会看到它{fn Now()}getdate()数据库引擎替换:

SELECT [o].[name],[o].[type_desc],[o].[create_date] 
FROM [sys].[objects] [o] 
WHERE [o].[create_date]<(getdate()-@1)
Run Code Online (Sandbox Code Playgroud)

显然, using{fn Now()}GetDate(). 我会像瘟疫一样避免这种语法,因为它没有记录。

sql-server functions

21
推荐指数
1
解决办法
7852
查看次数

sys.databases 中某些列的整理是怎么回事?

我试图UNPIVOTsys.databases2005 年到 2012 年的各种版本的 SQL Server 中包含的各种列上运行。

UNPIVOT与以下错误消息失败:

Msg 8167, Level 16, State 1, Line 48

“CompatibilityLevel”列的类型与 UNPIVOT 列表中指定的其他列的类型冲突。

T-SQL:

DECLARE @dbname SYSNAME;
SET @dbname = DB_NAME();

SELECT [Database]            = unpvt.DatabaseName
    , [Configuration Item]   = unpvt.OptionName
    , [Configuration Value]  = unpvt.OptionValue
FROM (
    SELECT 
        DatabaseName = name 
        , RecoveryModel                 = CONVERT(VARCHAR(50), d.recovery_model_desc)
        , CompatibilityLevel            = CONVERT(VARCHAR(50), CASE d.[compatibility_level] WHEN 70 THEN 'SQL Server 7' WHEN 80 THEN 'SQL Server 2000' WHEN 90 THEN 'SQL …
Run Code Online (Sandbox Code Playgroud)

sql-server collation metadata

21
推荐指数
3
解决办法
6134
查看次数

我应该使用 PostgreSQL 位串吗?

我最近一直在学习bit string数据类型,我很好奇:

  1. 这个文档页面的底部有一句话:

    ...加上 5 或 8 个字节的开销,具体取决于字符串的长度

  2. 在其他语言(如 PHP、Java、C#、C++ 等)中,如何通过 Npgsql、ODBC 等驱动程序处理位字符串?

对于问题 #1,使用 smallint 或 bigint 将提高存储效率,并且可能会提供性能提升,因为在任何地方都支持整数。大多数编程语言都可以轻松处理整数的位操作。如果是这样,那么引入位串数据类型的意义何在?是否仅适用于需要大量位掩码的情况?位域索引可能吗?我对 PostgreSQL 中如何进行位域索引比较好奇。

对于#2,我很困惑,不仅仅是好奇。例如,如果我将工作日位掩码存储在 bit(7) 字段中,一天一位,最低位代表星期一。然后我在 PHP 和 C++ 中查询该值。我会得到什么?文档说我会有一个位串,但是位串不是我可以直接使用的 - 就像整数一样。那么在这种情况下,我应该放弃位域吗?

任何人都可以详细说明为什么以及何时应该使用一点或一点变化?

postgresql

20
推荐指数
2
解决办法
2万
查看次数

DBA必读书籍

这个问题在任何 SE 站点中几乎都是强制性的,以供基本参考。

请仅发布对 DBA 具有永久价值的书籍。

帖子应该是必读书籍,经典书籍,基础书籍,而不是特定产品或过时的书籍。

MS-SQL Server 2008 的最新书可能是最先进的,但它已经过时且具体。

我有真正的兴趣。我基本上是一名程序员,数据库知识是我形成的一个缺陷。我知道很多关于数据库的事情只是在做日常任务。

learning

18
推荐指数
5
解决办法
2万
查看次数

PostgreSQL 9.1 中的自动故障转移

如何在 PostgreSQL 9.1 中设置两台相同的服务器以进行自动故障转移。

操作系统

Centos 5
PostgreSQL 9.1 源码编译
postgres 用户账号存在于两台机器上,并且有一个 ssh 无密码密钥,可以连接两台机器。

我当前的设置:

主服务器配置:

postgresql.conf:

listen_address = '*'
wal_level = hot_standby
max_wal_senders = 3
checkpoint_segments = 16    
wal_keep_segments = 8 
archive_mode = on    
archive_command = 'cp "%p" /opt/pgsql91/archive/"%f"'  
Run Code Online (Sandbox Code Playgroud)

pg_hba.conf:

 host  replication   all   10.0.66.1/32      trust
 host  replication   all   10.0.66.2/32      trust
Run Code Online (Sandbox Code Playgroud)

备用服务器

postgresql.conf 和 pg_hba.conf 与主服务器上配置的相同。

恢复.conf:

 standby_mode = 'on'
 primary_conninfo = 'host=10.0.66.1'
 trigger_file = '/opt/pgsql91/data/trigger.txt'
Run Code Online (Sandbox Code Playgroud)

感谢 hzRoot,我现在明白了如何将服务器从备用服务器切换到主服务器。

使用以下命令,我可以将新从站与新主站同步,然后获取复制备份并运行。

在新主 (10.0.66.2) 上

  1. su - postgres
  2. 触摸 /opt/pgsql91/data/ 中的 trigger.txt
  3. recovery.conf …

postgresql failover

18
推荐指数
1
解决办法
3万
查看次数

如何删除单个数据库中的所有触发器?

我有一个包含 104 个触发器的数据库,有没有办法使用单个命令从名为“system_db_audits”的单个数据库中删除所有触发器?

trigger sql-server-2008 sql-server

18
推荐指数
2
解决办法
3万
查看次数

多语句 TVF 与内联 TVF 性能

比较关于回文问题的一些答案(仅限 10k+ 用户,因为我删除了答案),我得到了令人困惑的结果。

我提出了一个多语句、模式绑定的 TVF,我认为它比运行标准函数要快。我还认为多语句 TVF 会被“内联”,尽管我在这方面是错误的,如下所示。这个问题是关于这两种TVF风格的性能差异。首先,您需要查看代码。

这是多语句 TVF:

IF OBJECT_ID('dbo.IsPalindrome') IS NOT NULL
DROP FUNCTION dbo.IsPalindrome;
GO
CREATE FUNCTION dbo.IsPalindrome
(
    @Word NVARCHAR(500)
) 
RETURNS @t TABLE
(
    IsPalindrome BIT NOT NULL
)
WITH SCHEMABINDING
AS
BEGIN
    DECLARE @IsPalindrome BIT;
    DECLARE @LeftChunk NVARCHAR(250);
    DECLARE @RightChunk NVARCHAR(250);
    DECLARE @StrLen INT;
    DECLARE @Pos INT;
    SET @RightChunk = '';
    SET @IsPalindrome = 0;
    SET @StrLen = LEN(@Word) / 2;
    IF @StrLen % 2 = 1 SET @StrLen = …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2012 set-returning-functions

18
推荐指数
1
解决办法
923
查看次数

为什么 CTE 应该以分号开头?

我只是在看StackOverflow上的一篇文章,其中 Aaron Bertrand 建议使用 CTE 而不是数字表,这是执行手头任务的一种优雅方式。我的问题是,为什么 CTE 的第一行以分号开头?

;WITH n AS (SELECT TOP (10000) n FROM 
  (SELECT n = ROW_NUMBER() OVER
    (ORDER BY s1.[object_id])
    FROM sys.all_objects AS s1
    CROSS JOIN sys.all_objects AS s2
  ) AS x ORDER BY n
)
SELECT n FROM n ORDER BY n; -- look ma, no gaps!
Run Code Online (Sandbox Code Playgroud)

这是为了确保 WITH 语句不会被解析为以前的内容SELECT或其他内容吗?我在 SQL Server 2005 BOL 中没有看到关于在 WITH 之前使用分号的内容。

sql-server syntax cte t-sql

16
推荐指数
3
解决办法
1万
查看次数