AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-18592

Peter PitLock's questions

Martin Hope
Peter PitLock
Asked: 2017-05-18 21:17:41 +0800 CST

了解 varchar(max) 8000 列以及为什么我可以在其中存储超过 8000 个字符

  • 13

从此Microsoft 文档中,+

n 定义字符串长度,可以是 1 到 8,000 之间的值。max 表示最大存储大小为 2^31-1 字节(2 GB)。存储大小是输入数据的实际长度 + 2 个字节。

请帮助我理解这一点。

varchar 的最大字符数似乎是8000,这远低于2GB数据的价值。

我看到varchar(max)特定表的此列中有len(mycolumn)> 100 000 的记录。因此我知道我可以将更多的8000字符放入varchar(max)列中。

问题 1:角色是如何8000发挥作用的,我应该在哪里注意?

问题 2:.net datareader 查询此列是否总是返回包含 100 000+ 个字符的完整结果?

sql-server varchar
  • 2 个回答
  • 24562 Views
Martin Hope
Peter PitLock
Asked: 2017-05-11 03:52:46 +0800 CST

SQL 网页版 下载位置

  • 1

我找不到 SQL Web Edition 的下载位置。

我可以找到Standard / Developer / Express 版本,但找不到 Web 版本。

我已经尝试过https://www.microsoft.com/en-us/sql-server/sql-server-downloads,我已经按照页面上的所有链接,找到了 SQL Web 版的各种信息资源,但不是实际文件。

我在哪里/如何下载 SQL 网络版

sql-server
  • 1 个回答
  • 6123 Views
Martin Hope
Peter PitLock
Asked: 2017-04-17 10:39:55 +0800 CST

可以在引擎执行之前拦截和更改引擎中的 SQL 查询吗?

  • 2

我已经放弃尝试修复在 SQL Server 上运行的 php 程序(当然是针对 MySQL 的)。

[Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Incorrect syntax near '`'. for query UPDATE wp_posts SET post_author = yyy, post_date =  N'2017-04-16 16:52:44.000', post_date_gmt =  N'2017-04-16 14:52:44.000', post_content =  N'\\ \', `post_content_filtered` =  N'', `post_title` =  N'test \\', `post_excerpt` =  N'', `post_status` =  N'draft', `post_type` =  N'post', `comment_status` =  N'closed', `ping_status` =  N'open', `post_password` =  N'', WHERE ID = xxx made by edit_post, wp_update_post, wp_insert_post, pdo_wpdb->query, pdo_wpdb->_post_query, pdo_wpdb->print_error

是否可以仅在特定数据库上创建过滤器,并删除所有反引号/严重符号以清理所有传入查询?

sql-server
  • 2 个回答
  • 1112 Views
Martin Hope
Peter PitLock
Asked: 2017-04-08 22:39:53 +0800 CST

SQL Azure 池中每个数据库的安全性

  • 1

我是 SQL Azure 的新手,需要计划移动我们的一些 SQL Server 数据库。

我们有一个 SQL Server Azure 池,最多可以容纳 50 个数据库。

我需要将某些用户限制在池内的特定数据库中。

例如,User1 只能访问数据库 Northwind - 因此当他使用 SSMS 连接到 Azure 池时,这是他唯一可以看到的数据库(他看不到其他 49 个)

设置这是否可能 - 或者如果您有权访问实例(整个池) - 那么您将有权访问该池内的所有数据库?

这是否意味着我们需要基于安全性将每个数据库移动到它自己的实例?它还意味着无论在应用程序 web.config 中使用什么 SQL 用户名/密码,配置中的该用户都将有权访问 SQL 实例(服务器名)中的所有数据库

我正在查看 Pluralsight 上的 SQL Azure 培训,发现有基于 IP 的数据库级防火墙——在这种情况下,我们有多个开发人员——每个开发人员都具有相同的 IP——但特定的开发人员必须只能访问特定的数据库。因此,实例上每个数据库的一个 IP 规则将不起作用,因为未评估用户名。

sql-server security
  • 1 个回答
  • 103 Views
Martin Hope
Peter PitLock
Asked: 2017-04-07 22:42:38 +0800 CST

为什么我必须备份事务日志两次才能缩小?

  • 4

这个问题在专家交流中被尝试了两次,没有真正的答案。

我知道我不应该缩小日志文件——这不是问题。

如果您想回答一个人不应该这样做 - 这已经被多次证实是的,这不是这个问题的目标。

设置为简单备份也不是一种选择。

多年来它一直困扰着我——事实上我现在知道为什么它应该备份两次。

我最近看到第一个日志文件在第一次尝试时每次都能够缩小——这令人难以置信。我问了那个人,我所能做的就是“在发布前重组”——我不知道他指的是什么。我无法再次联系到他。

我从 EE 上的现有帖子中知道这一点:“收缩删除了日志的非活动部分。为了不活动,必须截断日志,这作为日志备份的一部分发生。

但是,事务日志由许多以循环方式使用的虚拟日志文件组成。只能修剪文件末尾的虚拟日志,因此如果 SQL Server 当前正在使用最后一个虚拟日志,则无法删除任何内容。sql 7 中的旧修复是运行一个脚本,该脚本运行足够多的虚拟事务来填充日志并将指针环绕到第一个虚拟日志(如果您愿意,您仍然可以使用此方法)。
http://support.microsoft.com/kb/256650/EN-US

DBCC 现在为您执行此操作,但仍需要再次截断日志的额外步骤,以便可以删除非活动空间”

来自另一位用户:“我所要做的就是停止上一个管理员在数据库维护计划中留下的自动优化和完整性检查。”

sql-server backup
  • 1 个回答
  • 2491 Views
Martin Hope
Peter PitLock
Asked: 2017-03-25 05:25:33 +0800 CST

将一年中的每一天与 DATEFIRST = 1 和 DATEFIRST = 7 进行比较

  • 2

要获取周列表,我只需运行此(在线找到):

SET DATEFIRST 7
;with DateCTE   as
(
    select cast('01/01/2017' as datetime) DateValue
    union all
    select DateValue + 1
    from    DateCTE  
    where   DateValue + 1 < '1/1/2018'
)


Select
    cast(CAST(DateValue AS CHAR(11)) AS DateTime) AS [FullDate],
    DATEPART(wk, DateValue) AS WeekOfYear,
    DATEPART(yy, DateValue) AS CalendarYear 
from   DateCTE
OPTION (MAXRECURSION 0)

在此处输入图像描述

显然,如果我设置 DATEFIRST = 1,那么它会得到不同的结果。

在此处输入图像描述

我需要比较一张表中的日期,而不使用表变量。这就是我想要实现的目标: 在此处输入图像描述

因此,我希望在两个 CTE 中看到相同的 365 天,

我想比较基于不同 DateFirsts 的 WeekOfYear。

我不知道如何有效地做到这一点。我只能让它工作,当我

  1. 创建表变量 1 并为 DateFirst7 运行 CTE
  2. 创建表变量 2 并为 DateFirst1 运行 CTE

这是低效的,我正在寻找一种更好的方法来做到这一点。

有一些事情不利于此 1. 我不知道如何在查询中设置 DateFirst。我只知道在cte之前怎么设置。2. 我想为此使用嵌套 CTE,但 OPTION (MAXRECURSION 0) 不适用于嵌套 CTE

这可能吗 - 使用 CTE 获得所需的结果?

sql-server cte
  • 3 个回答
  • 705 Views
Martin Hope
Peter PitLock
Asked: 2017-03-24 22:14:05 +0800 CST

连接到 VPN SQL 实例的本地 SSMS - VPN 断开连接时更新失败

  • 1

我连接到 VPN。

我从本地计算机打开 SSMS。

我将本地计算机 SSMS 连接到 VPN 上的 SQL 实例

我从本地计算机执行长时间运行的 SQL 更新,在此期间发生 VPN 错误。

现在,SQL 更新的所有进展都将丢失。

有没有办法使用本地计算机连接到远程 SQL 实例,并让 SQL 更新完成,即使我断开连接。

sql-server ssms
  • 2 个回答
  • 583 Views
Martin Hope
Peter PitLock
Asked: 2016-11-16 02:10:04 +0800 CST

SQL Server 可用性组不会自动更新数据库所有者

  • 2

这周我学到了一个惨痛的教训。事实证明,虽然表更新/模式更新确实在可用性组上的数据库之间复制,但更改主副本上的数据库所有者并不会自动更改辅助副本上的数据库所有者。

因此,如果您执行故障转移,数据库所有者现在可能与主表的 SID 不同步。

在进行安全相关更改时,我的行动计划是否应该是

1. Apply change to primary replica
2. Fail over the Availability Group
3. Apply change to the new primary replica

我做出这些陈述是否正确?当我进行更改时,我必须注意的只是 DBOwner/Schema 更改吗?

security sql-server-2014
  • 1 个回答
  • 3827 Views
Martin Hope
Peter PitLock
Asked: 2016-08-17 23:24:29 +0800 CST

相同数据库的 SQL 2014 可用性组产生从节点 A 到节点 B 的不同大小的备份

  • 1

我在 SQL 作业中有这段代码,可以按小时运行数据库备份。

IF sys.fn_hadr_backup_is_preferred_replica('AdventureWorks') = 1
BEGIN
  declare @seq varchar(7) = '-' + Right('00' + cast(datepart(HOUR, getdate()) % 24 as varchar(2)), 2) + '.bak'
  ...
  WITH INIT, FORMAT, COPY_ONLY, CREDENTIAL = 'AdventureWorksAzureBackupStorage', compression, stats=1
END

我的问题是,如果我取出检查fn_hadr_backup_is_preferred_replica 并运行

BEGIN
  declare @seq varchar(7) = '-' + Right('00' + cast(datepart(HOUR, getdate()) % 24 as varchar(2)), 2) + '.bak'
  ...
  WITH INIT, FORMAT, COPY_ONLY, CREDENTIAL = 'AdventureWorksAzureBackupStorage', compression, stats=1
END

首先在 A 上,然后在 B 上,然后数据库的大小差异很大,例如,主动节点数据库备份比被动节点数据库备份大 8 倍。

请问这有解释吗?也许活动节点没有被压缩?而被动节点被压缩了?

backup sql-server-2014
  • 1 个回答
  • 113 Views
Martin Hope
Peter PitLock
Asked: 2016-05-17 22:42:49 +0800 CST

使用不同排序规则创建的数据库 - 为什么?

  • 2

我们有一个 SQL Server 2014 实例,其中包含许多相关的数据库。定期通过我们的脚本添加新的。当我们的应用程序用于创建数据库时 - 数据库SQL_Latin1_General_CP1_CI_AS 按预期使用排序规则创建。

但是现在有带Latin1_General_CI_AS排序规则的数据库。它们不是由我们的应用程序创建的(我们查看了数据库创建者)。例如,“Pete”是 db 所有者,他创建的一些 DB 会有Latin1_General_CI_AScollat​​ion 和 others SQL_Latin1_General_CP1_CI_AS。

谁能指出我可以调查的内容 - 默认排序规则是否应该不总是与 SQL 实例相同?如果我远程创建了一个数据库——从 PC1 和 Collat​​ion1 到 PC2 和 Collat​​ion2——数据库会用不同的排序规则创建吗?

任何想法如何发生 - 一个用户的多个排序规则?谢谢

sql-server sql-server-2014
  • 1 个回答
  • 537 Views
Martin Hope
Peter PitLock
Asked: 2015-09-22 22:03:58 +0800 CST

根据特定规则识别事件序列

  • 1

我需要帮助来识别 SQL Server 2008 R2 行中的一系列事件,请:

这是SQLFiddle的示例数据:

   ID   EventTime       TypeID             EventNr
    1   06:34:51        1
    2   06:35:51        3
    3   06:36:51        40
    4   06:37:51        10
    5   06:48:51        1
    6   06:49:51        2
    7   06:50:51        4
    8   06:51:51        40
    9   06:52:51        5
    10  06:53:51        10

我需要帮助来识别 Event Nrs - 我必须遵守的规则:

  • 事件以 TypeID 1 ( @StartTypeID) 开始。

  • 事件以 TypeID 10 ( @EndTypeID) 结束。

  • @StartTypeID事件在 之后和 之前具有不同的 TypeID @EndTypeID。

  • 而且EventNrs之间必须有5分钟以上。

这是上述示例的预期结果:

 ID EventTime   TypeID  Notes                                               EventNr
1   06:34:51    1       Starts with TypeID @StartID 1     (OK)                     1
2   06:35:51    3       Has different TypeID in sequence before @EndID reached(OK) 1
3   06:36:51    40                                                                 1
4   06:37:51    10      Ends with @EndID 10 + >5min before next Event(OK EventEnd) 1

5   06:48:51    1       Starts with TypeID @StartID 1                              2
6   06:49:51    2       Has different TypeID in sequence before @EndID reached     2
7   06:50:51    4                                                                  2
8   06:51:51    40                                                                 2
9   06:52:51    5       Has different TypeID in sequence before  @EndID reached    2
10  06:53:51    10      Ends with @EndID 10                                        2

用于创建数据样本的 SQL:

declare @FirstTypeID int = 1

declare @LastTypeID int = 10


create table #T (ID int identity , EventTime datetime, TypeID int)
insert into #T(EventTime,TypeID)
values
 (DATEADD(minute,-30,getdate()),1)
 ,(DATEADD(minute,-29,getdate()),3)
 ,(DATEADD(minute,-28,getdate()),40)
 ,(DATEADD(minute,-27,getdate()),10)  
 ,(DATEADD(minute,-16,getdate()),1)
 ,(DATEADD(minute,-15,getdate()),2)
 ,(DATEADD(minute,-14,getdate()),4)
 ,(DATEADD(minute,-13,getdate()),40)
 ,(DATEADD(minute,-12,getdate()),5) 
 ,(DATEADD(minute,-11,getdate()),10)    


select * from #T

drop table #T
sql-server sql-server-2008-r2
  • 1 个回答
  • 1750 Views
Martin Hope
Peter PitLock
Asked: 2015-08-07 04:29:28 +0800 CST

从表中将 GPS 坐标读入 LineString

  • 1

我发现了这段漂亮的代码,它带有一个线串,我可以从中得到要点:

DECLARE @GeographyToConvert geography
SET     @GeographyToConvert = geography::STGeomFromText('LINESTRING (26.6434033 -81.7097817, 26.6435367 -81.709785, 26.6435783 -81.7098033, 26.6436067 -81.709825, 26.6435883 -81.709875, 26.64356 -81.7100417, 26.6434417 -81.710125, 26.6433167 -81.7101467, 26.643195 -81.7101033, 26.6431533 -81.7099517, 26.643175 -81.7097867, 26.643165 -81.7097917, 26.6431633 -81.7097367, 26.6431583 -81.7097083)',4326);
select @GeographyToConvert.STPointN(1)
select @GeographyToConvert.STPointN(2)
select @GeographyToConvert.STPointN(3)

退货:

0xE6100000010C273339106D6D54C073A32314B6A43A40
0xE6100000010C3F8C101E6D6D54C0984638D2BEA43A40
0xE6100000010CF205D26A6D6D54C050EA268CC1A43A40

从这里,我可以通过上面提到的代码来做我需要做的事情。

但是,我没有使用预填充的演示 Linestring,而是有一个 GPS 坐标表,其中包含我需要从中填充的数据@GeographyToConvert geography

declare @Geo table(long float, lat float)
insert into @Geo(  long, lat ) values
               ( -121.527200, 45.712113 ),
               ( -121.517265, 45.714240 ),
               ( -121.511536, 45.714825)

Select * from @Geo

我可以请求帮助将@Geo表格值放入@GeographyToConvert geography

sql-server-2008-r2 spatial
  • 2 个回答
  • 748 Views
Martin Hope
Peter PitLock
Asked: 2015-04-14 04:24:08 +0800 CST

日志传送 - 监控服务器关闭 - 正在复制但不在辅助服务器上恢复

  • 1

我已经设置了几个日志传送实例,但我不是 DBA。

这个周末第一次发生了一些事情——由于我无法控制的电气问题,日志传送监视器服务器暂时关闭。

在此期间,当我查看主要机器和次要机器时 - 两者都已启动并正在运行,并且 .trn 文件仍在从主要机器复制到次要机器 - 正如预期的那样。然而,辅助实例根本没有恢复 .trn 文件。我收到通知:

日志传送主数据库 _________ 的备份阈值为 60 分钟,并且有 82 分钟未执行备份日志操作。检查代理日志和日志传送监视器信息。

这是预期的吗?主要和次要都在运行 - 监视器不应该是一个“可选”的 SQL 实例,它应该对日志传送没有影响吗?它阻止了辅助实例应用备份,即使我后来明确运行了还原作业。当监控服务器重新启动时 - 一切都会自行解决。

我知道我有很多东西要学,如果有任何关于我是否可以检查某些设置或这是否符合预期的建议,我们将不胜感激。

sql-server-2008-r2 monitoring
  • 1 个回答
  • 1087 Views
Martin Hope
Peter PitLock
Asked: 2014-09-17 06:24:39 +0800 CST

SQLCMD - 将日期添加到 CSV。当在命令提示符中运行时它起作用,当在作业中然后 %date

  • 0

为了将日期添加到 CSV 名称,我已经苦苦挣扎了几个小时:为简洁起见,我在这里只取日期的第一个字符。

在 SQL 命令中,这有效:

sqlcmd -S localhost -d master -E -W -w 999 -s "," -Q "SELECT D.* FROM sys.databases D" -o "C:\sqlcmd%date:~1,1%.csv"

但是当我尝试在作业的步骤中使用完全相同的代码时,文件名是

sqlcmd_%date

我不能运行 xp_commandShell,有没有办法让动态日期在 SQLCmd 中工作?我已经阅读了很多文章,例如。

sql-server-2008-r2 csv
  • 1 个回答
  • 993 Views
Martin Hope
Peter PitLock
Asked: 2014-09-16 06:59:26 +0800 CST

SQL Server 2008 R2 - 删除标题下方的行(有 -----,----) - 没有 SSIS

  • 2

我在网上找到了这行代码

sqlcmd -S localhost -d master -E -W -w 999 -s "," -Q "SELECT D.* FROM sys.databases D" -o "C:\sqlcmd.csv"

这在 SQL 作业中使用,以导出到 CSV 文件。

没有安装 SSIS,我无法在机器上安装 SSIS。

这是导出的

name,database_id,source_database_id,owner_sid,create_date,compatibility_level,collation_name,user_access,user_access_desc,is_read_only,is_auto_close_on,is_auto_shrink_on,state,state_desc,is_in_standby,is_cleanly_shutdown,is_supplemental_logging_enabled,snapshot_isolation_state,snapshot_isolation_state_desc,is_read_committed_snapshot_on,recovery_model,recovery_model_desc,page_verify_option,page_verify_option_desc,is_auto_create_stats_on,is_auto_update_stats_on,is_auto_update_stats_async_on,is_ansi_null_default_on,is_ansi_nulls_on,is_ansi_padding_on,is_ansi_warnings_on,is_arithabort_on,is_concat_null_yields_null_on,is_numeric_roundabort_on,is_quoted_identifier_on,is_recursive_triggers_on,is_cursor_close_on_commit_on,is_local_cursor_default,is_fulltext_enabled,is_trustworthy_on,is_db_chaining_on,is_parameterization_forced,is_master_key_encrypted_by_server,is_published,is_subscribed,is_merge_published,is_distributor,is_sync_with_backup,service_broker_guid,is_broker_enabled,log_reuse_wait,
log_reuse_wait_desc,is_date_correlation_on,is_cdc_enabled,is_encrypted,is_honor_broker_priority_on
----,-----------,------------------,---------,-----------,-------------------,--------------,-----------,----------------,------------,----------------,-----------------,-----,----------,-------------,-------------------,-------------------------------,------------------------,-----------------------------,-----------------------------,--------------,-------------------,------------------,-----------------------,-----------------------,-----------------------,-----------------------------,-----------------------,----------------,------------------,-------------------,----------------,-----------------------------,------------------------,-----------------------,------------------------,----------------------------,-----------------------,-------------------,-----------------,-----------------,--------------------------,---------------------------------,------------,-------------,------------------,--------------,-------------------,-------------------,-----------------,--------------,
-------------------,----------------------,--------------,------------,---------------------------
master,1,NULL,0x01,2010-04-08 09:13:36.390,100,SQL_Latin1_General_CP1_CI_AS,0,MULTI_USER,0,0,0,0,ONLINE,0,0,0,1,ON,0,3,SIMPLE,2,CHECKSUM,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0xxxx0-0000-0000-0000-000000000000,0,0,NOTHING,0,0,0,0
tempdb,2,NULL,0x01,2014-09-15 08:39:08.587,100,SQL_Latin1_General_CP1_CI_AS,0,MULTI_USER,0,0,0,0,ONLINE,0,0,0,0,OFF,0,3,SIMPLE,2,CHECKSUM,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,Exxxxx7-BE30-4829-8AB1-DAA8730978AE,1,0,NOTHING,0,0,0,0

无论如何要修改命令以排除标题下方的行,我需要标题,但他们不能接受标题下方的行(以 开头的行----,--)

sql-server-2008-r2 powershell
  • 1 个回答
  • 541 Views
Martin Hope
Peter PitLock
Asked: 2014-09-05 23:47:24 +0800 CST

操作数类型冲突:我的第一个带有整数列表的用户定义类型,如何通过 SSMS 进行测试

  • 6

我在这里找到了这个很棒的代码

    CREATE TYPE [dbo].[StringList] AS TABLE(
    [Item] [NVARCHAR](MAX) NULL
);

    GO 
    CREATE PROCEDURE [dbo].[sp_UseStringList]
        @list StringList READONLY
    AS
    BEGIN
        -- Just return the items we passed in
        SELECT l.Item FROM @list l;
    END

    GO

但我不知道如何通过 SSMS 进行测试

declare @list   StringList  = '1,2,3,4,5'
exec sp_UseStringList @list

给出错误:

Operand type clash: varchar is incompatible with StringList

请问如何测试列表'1,2,3,4,5'

sql-server-2008 user-defined-type
  • 1 个回答
  • 21898 Views
Martin Hope
Peter PitLock
Asked: 2014-07-05 03:11:23 +0800 CST

每行合并 - 获取每个 HeaderRow 分组的所有详细信息 ID,例如 Invoice1 | 1,2,3 发票 2 | 4,5,6

  • 0

我有以下演示数据(取自 Adventureworks)

SalesOrderNumber    SalesOrderDetailID
SO43659             12
SO43659             11
SO43659             8
SO43659             9
SO43660             14
SO43660             13
SO43661             27

是否可以按 SalesOrderNumber 分组,并显示每个 SalesOrderNumber 的详细信息 ID?

SalesOrderNumber    SalesOrderDetailID
SO43659             12, 11, 8, 9
SO43660             14, 13
SO43661             27

http://www.sqlfiddle.com/#!3/7708b/1

请问最好的选择是什么?支点?游标?

为每一行调用存储过程的游标,例如这里?还是4guysfromrolla 中使用用户定义函数的这个选项?

这是只运行一次的东西 - 在晚上 - 我不需要效率 - 请提供任何帮助。

sql-server-2008 row
  • 1 个回答
  • 99 Views
Martin Hope
Peter PitLock
Asked: 2014-07-04 23:03:31 +0800 CST

匹配行中的 3 列 - 如果一列为空,则将其排除在比较之外

  • 1
A   B   C    Equal
1   1   1    Y
2   2   NULL N

嗨,我有 3 列需要比较:A、B、C 列。如果这 3 列相同,则列 'Equal' = 'Y'

但是,如果一列为空,则必须将其排除在比较之外,例如,在示例中第 2 行为空,但其余列都相同,因此 Equal 应该为 yes - 因为所有非空值都是平等的

http://www.sqlfiddle.com/#!3/dedd9/2

我以为我可以使用 isnull(C,A) = A 但它不起作用。有人可以帮忙吗

 declare @t table
 (
 A decimal,B decimal, C decimal
 )

 insert Into @t(A,B,C) values (1,1,1)
 insert Into @t(A,B) values (2,2)

 select A,B,C,'Equal' = case when ISNULL(A,B) = B and ISNULL(B,C) = C and ISNULL(C,A) = A then 'Y' else '' end
 from @t
sql-server-2008-r2 isnull
  • 3 个回答
  • 3345 Views
Martin Hope
Peter PitLock
Asked: 2014-03-31 23:58:47 +0800 CST

在存储过程中,根据变量设置返回查询的列名

  • 2

我有一个我想重用的查询,而不是仅仅为了更改列名而拥有许多不同的副本。

报告(例如)使用相同的查询,但表中有狗或猫,如果有猫,则返回“Nr of Cats”,如果有狗,则返回“Nr of Dogs”作为标题返回的表。

declare @Animals table (
  AnimalType varchar(20), Name varchar(20)
  )

insert into @Animals(Type, Name) values('Cat', 'Garfield')

declare @AnimalType varchar(20)

set @AnimalType = (Select Top 1  AnimalType from @Animals )

select 
    Case when @AnimalType = 'Cat' 
           then 'Nr of Cats' 
           else 'Nr of Dogs' = count(*)  from @Animals
sql-server-2005 temporary-tables
  • 1 个回答
  • 2069 Views
Martin Hope
Peter PitLock
Asked: 2014-02-25 05:29:05 +0800 CST

遍历字符串,添加所有数字,例如 '123' = 1+2+3,包含工作循环的演示

  • 0

这可以将字符串输出123456为:

1
2
3
4
5
6

代码:

declare @string varchar(20)
declare @index int
declare @len int
declare @char char(1)

set @string = '123456'
set @index = 1
set @len= LEN(@string)

WHILE @index<= @len
BEGIN
set @char = SUBSTRING(@string, @index, 1)
print @char

SET @index= @index+ 1
END

但是当我尝试使用此代码在循环它们时将这些值相加(1+2+3+4+5+6 = 21),那么我没有从 SQL 中得到结果,请帮助

declare @string varchar(20)
declare @index int
declare @len int
declare @char char(1)

set @string = '123456'
set @index = 1
set @len= LEN(@string)

declare @Total int 


WHILE @index<= @len
BEGIN
set @char = SUBSTRING(@string, @index, 1)
set @Total = @Total + cast(@char as int)

SET @index= @index+ 1
END

print @Total
sql-server-2005 string
  • 1 个回答
  • 6777 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve