当美国 SSN/TIN字符串看起来有效时(其中有效 = 9 位数字),我需要使用破折号对其进行格式化
,否则返回字段中的内容(带前导 0)。
123456789应格式化为123-45-6789
并3456789格式化为003-45-6789
有人能告诉我为什么这段代码不起作用吗?
Declare @TaxIDNum VarChar(11)
Set @TaxIDNum = '3456789'
Set @TaxIDNum = Right('0000'+@TaxIDNum,9)
Set @TaxIDNum =
CASE @TaxIDNum WHEN Len(@TaxIDNum)=9 THEN
CASE @TaxIDNum
WHEN IsNumeric(@TaxIDNum)
THEN Left(@TaxIDNum,3)+'-'+Right(Left(@TaxIDNum,5),2)+'-'+Right(@TaxIDNum,4)
ELSE @TaxIDNum END -- return existing value
ELSE @TaxIDNum END -- return existing value
select @TaxIDNum, len(@TaxIDNum) as Length
Run Code Online (Sandbox Code Playgroud)
我在“=9”中的等号上收到红色波浪线错误:(
错误文本是:“'='附近的语法不正确。”)
任何既能与 select 或 set 配合使用又能解决问题的解决方案都是受欢迎的。
感谢@Larnu 的提及Set @TaxIDNum=FORMAT(CONVERT(int,@TaxIDNum),'000-00-0000')
如果我有错误处理(我们的 SSvr 安装没有)我会使用 Format。但是,如果存在错误数据,它会以无法恢复的方式破坏我的查询。
Set @TaxIDNum=Replace('123-45-6789','-','')如果唯一的数据问题是某些行已经格式化,则确实可以避免错误。
我正在尝试将事件归因于流量日志中的源.对于任何半精明的技术营销人员或网站管理员而言,这似乎是相当基本的领域,但我已经用Google搜索了一下,而且令人惊讶的是,似乎没有人覆盖这一点.
背景:我使用T-SQL,我们正在SQL Server上运行2016年我的事件日志(HAProxy的)是这个样子,哪里RefererHost是'%mysite%'内部推荐,但也可以是其他任何外部推荐(入口).
User Agent || IP || RefererHost || Event || CreationDate
------------------------------------------------------------------------------
qwertyuiop || 99.99.99.9 || google.com || Home/View || 2015-05-29 00:00:25
------------------------------------------------------------------------------
qwertyuiop || 99.99.99.9 || mysite/x || Home/View || 2015-05-29 00:00:27
------------------------------------------------------------------------------
abcdefghij || 11.11.11.1 || yahoo.com || Home/View || 2015-05-29 00:00:49
------------------------------------------------------------------------------
qwertyuiop || 99.99.99.9 || mysite/y || Submit || 2015-05-29 00:01:28
------------------------------------------------------------------------------
abcdefghij || 11.11.11.1 || mysite/p || Photo/View || 2015-05-29 00:02:04
------------------------------------------------------------------------------
abcdefghij || 11.11.11.1 || mysite/n || …Run Code Online (Sandbox Code Playgroud) 我全新安装了 SQL 2016 RC1。报表生成器工作(用于分页报表)。但是我无法让 Mobile Report Publisher 创建从我的笔记本电脑到 sql 实例的连接。当我尝试连接到服务器时,出现“服务器错误”无法连接到远程服务器。我正在运行移动发布商的最新预览版 3。我已经为服务器地址尝试过 server/reportserver 和 server/reports,但没有运气。如果取消选中使用安全连接的选项,我会收到不同的错误。
有任何想法吗?
尝试执行 MSDN 提供的测试脚本以确保启用 R,但它抛出以下错误,
Msg 39023, Level 16, State 1, Procedure sp_execute_external_script, Line 1 [Batch Start Line 0]
'sp_execute_external_script' is disabled on this instance of SQL Server. Use sp_configure 'external scripts enabled' to enable it.
Msg 11536, Level 16, State 1, Line 1
EXECUTE statement failed because its WITH RESULT SETS clause specified 1 result set(s), but the statement only sent 0 result set(s) at run time.
Run Code Online (Sandbox Code Playgroud)
我已经确定我运行了
Exec sp_configure 'external scripts enabled', 1
Run Code Online (Sandbox Code Playgroud)
使用覆盖重新配置
声明,然后我确保配置设置设置为 1,它是,并在检查和之后重新启动服务,但没有运气。
我还确保我不会加载任何其他 R 开放平台 …
我自己和另一个管理员一直在尝试解决我们的新报告服务器上的双跳身份验证问题(报告以经过身份验证的用户身份运行,但无法委托给数据源并返回'NT Authority\Anonymous'身份验证错误)和我们似乎正在走向死胡同.这里有一些关于我们的设置.
我们在一台服务器上安装了SSRS 2016,我们的报告数据源位于另一台服务器上.我们已完成以下步骤以尝试启用身份验证
RSWindowsNegotiate/RSReportServer.config文件中的< >尝试连接报表服务器上的数据源时,我们仍然收到错误,甚至通过浏览器连接到网页时也出现问题.奇怪的是,我们尝试在报表服务器上设置链接服务器,配置安全性以在执行命令的用户下运行,并且能够在链接服务器上成功执行双跳,但仍然不能从SSRS执行.
数据源是否需要在服务帐户下运行,还是可以在SQL的本地服务帐户下运行?服务帐户是否需要具有服务器所在的OU的委派权限?我可能还缺少哪些其他物品?
sql authentication reporting-services kerberos-delegation sql-server-2016
我正在尝试在计算列中构建if语句我想要完成的内容应该看起来像这样但是这是更多的伪代码:SalePrice-Cost-(if(isConsigned = 1 Then Payout else 0))
我怎么做这个,我可以在计算列内使用if语句,还是应该是其他的?
我有一个表创建日期和创建用户字段定义似乎工作.
但是我在创建一个功能正常的行更新日期时间和行更新字段时遇到了困难.
我希望字段如何工作:当有人在表中更新记录时,仅记录正在更新的记录的日期/时间和用户名.
这是我失败的触发器创建语法,我错误地改编自Stack Overflow上的答案:
我应该注意,我不明白"插入"表在许多其他例子中的来源.也不是为什么它和内部联合起作用.
CREATE TRIGGER mkt.Update_tbl_fTesting
ON mkt.tbl_fTesting
FOR UPDATE
AS
BEGIN
SET NOCOUNT ON;
UPDATE mkt.tbl_fTesting
SET RowUpdateDateTime = GetDate()
, RowUpdateBy = coalesce(SUSER_SNAME(), '?')
FROM mkt.tbl_fTesting
INNER JOIN inserted
ON tbl_fTesting.tbl_fTestingIdentity = inserted.ID;
END
GO
Run Code Online (Sandbox Code Playgroud)
执行触发器创建语法的错误是:
列名称"ID"无效
这是我的预期表创建语法:
USE [ObscuredDatabase]
GO
DROP TABLE [mkt].[tbl_fTesting]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [mkt].[tbl_fTesting](
[tbl_TestingIdentity] [bigint] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[Produce] [nvarchar] (25) NOT NULL,
[Color] [nvarchar] (25) NOT …Run Code Online (Sandbox Code Playgroud) 我有一个简单的表,该表由5条记录(以毫秒为单位)组成。我将数据库从2016升级到2017 SQL Server时遇到了问题。 此处附有两个图像,用于比较2016和2017 SQL Server结果的结果。我不明白为什么会在2017年出现这种不良行为。
这是2017 SQL Server中的错误吗??
在这两种情况下,表列数据类型在这两个日期时间数据类型中都是相同的。
这是创建表查询。
USE [Test]
GO
CREATE TABLE [dbo].[TestVisionBot3](
[FileId] [varchar](50) NULL,
[OrgId] [nchar](10) NOT NULL,
[ProjectId] [varchar](50) NULL,
[CreatedAt] [datetime] NULL,
[LockedUserid] [nvarchar](50) NULL
) ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)
这也是示例数据。
1a 1 2a 2018-04-29 10:30:30.010 test
3a 1 2a 2018-04-29 10:30:30.553 test
2a 1 2a 2018-04-29 10:30:30.557 test
4a 1 2a 2018-04-29 10:30:30.560 test
5a 1 2a 2018-04-29 10:30:30.563 test
Run Code Online (Sandbox Code Playgroud) 先感谢您.
我有一张长柱的表.
我只需要从列中获取名称.
这是列名:
QSTY-IOM-HFVNBJGYG | Mobile #: 9876541323 | CUSTOMER NAME: MNOP UNIPOUYTREA POIUY | INVOICE DATE:02/28/18 | EMP#: 101466 | EMPLOYEE NAME: ANGELINA CASIANO
Run Code Online (Sandbox Code Playgroud)
我只需要从此列中获取客户名称.我尝试了Charindex并且它正在显示错误消息
传递给LEFT或SUBSTRING函数的长度参数无效.
输出:
MNOP UNIPOUYTREA POIUY
Run Code Online (Sandbox Code Playgroud)