SQL_VARIANT数据类型可用于同时存储各种数据类型的值,例如数值,字符串和日期值.(唯一不能存储的值类型是TIMESTAMP值.)那么在表中避免这种数据类型的具体原因是什么?
众所周知,一般排序是使用order by.我想要执行的那种不同.我希望表格n中间的最小长度值是其顶部和底部的最大长度值.一半应该是下降,另一半应该是上升.你们能帮忙吗?这是一个面试问题.
sql sql-server sql-server-2008 sql-server-2008-r2 sql-server-2012
我现在第一次开始使用几何或地理数据类型,因为我们有一个2008R2的开发基线(!)我正在努力找到如何存储圆的表示.我们目前有圆的中心和长度的纬度,类似于: -
[Lat] [float] NOT NULL,
[Long] [float] NOT NULL,
[Radius] [decimal](9, 4) NOT NULL,
Run Code Online (Sandbox Code Playgroud)
有没有人知道使用STGeomFromText方法存储它的等效方法,即使用哪个Well-Known Text(WKT)表示?我看过圆形字符串(LINESTRING)和曲线,但找不到任何例子....
谢谢.
t-sql geometry geospatial sql-server-2008-r2 computational-geometry
如何在SQL Server 2008 R2中为以下格式转换日期:
日期:
'29-01-2008 AM 12:00:00'
Run Code Online (Sandbox Code Playgroud)
我有上面的日期来检查表的当前日期.
如何从上述格式中仅查看日期?
我已经尝试了选择REPLACE(' this is a user name', ' ', ''),它给了我'thisisausername'这应该是.
我的问题是,当我尝试使用REPLACE选择表列时,它不起作用!
我的查询:
SELECT REPLACE(UserName, ' ', '') as UserName FROM MY_TABLE
Run Code Online (Sandbox Code Playgroud)
它仍然给我带有空格的用户名!我做了些蠢事吗?
我需要在单个字符串中缺少必需值的所有列名,在下面显示的select语句中.
我已经尝试过使用CASE语句,但它没有工作,因为如果第一个匹配,它将省略第二个条件.
SELECT
stg2.StageID
,[CSP]
,[CSPRegionID]
,[SoldToCompanyID]
,[EndUserCompanyID]
,[SupportOptionID]
,'One/More Mandatory value/s is/are missing' FailureReason
,CASE WHEN stg2.CSP IS NULL THEN @FailureDetails + 'CSP'
WHEN stg2.CSPRegionID IS NULL THEN @FailureDetails + 'CSP Region'
WHEN stg2.SoldToCompanyID IS NULL THEN @FailureDetails + 'SoldToCompany'
WHEN stg2.EndUserCompanyID IS NULL THEN @FailureDetails + 'EndUserCompany'
WHEN stg2.SupportOptionID IS NULL THEN @FailureDetails + 'SupportOption'
END FailureDetails
FROM [EntitlementTracker_SRV4Stage].[dbo].[srv4_ClassicLoad_Stage2] stg2
WHERE stg2.CSP IS NULL
OR stg2.CSPRegionID IS NULL
OR stg2.SoldToCompanyID IS NULL
OR stg2.EndUserCompanyID IS NULL
OR stg2.SupportOptionID …Run Code Online (Sandbox Code Playgroud) 我有一个包含数据的大型CSV文件,如下所示(我已对其进行了简化):
Timestamp, Value 1, Value 2
41883.00000000, 123.4, 223.4
41883.00011574, 567.8, 667.8
Run Code Online (Sandbox Code Playgroud)
我想使用SQL Server导入和导出向导将数据导入MSSQL 2008 R2。为此,我需要将我的时间戳列转换为日期时间,这会将时间戳更改为:
Timestamp ->> Timestamp (converted)
41883.00000000 ->> 2014-09-01 00:00:00
41883.00011574 ->> 2014-09-01 00:00:10
Run Code Online (Sandbox Code Playgroud)
谁能帮助我进行转换的语法?
我正在尝试处理一个字符串,以便只采用大写字母和数字.试图使用PATINDEX,因为我想保持这种简洁 - 它将成为更大的查询的一部分.
有很多例子显示出类似的东西,但我似乎错过了一些东西.到目前为止我已经有了
DECLARE @string varchar(100)
SET @string = 'AbcDef12-Ghi'
WHILE PATINDEX('%[^A-Z0-9]%',@string) <> 0
SET @string = STUFF(@string,PATINDEX('%[^A-Z0-9]%',@string),1,'')
SELECT @string
Run Code Online (Sandbox Code Playgroud)
根据例如这个问题,然而这似乎并没有做我需要的.
使用[^0-9]输出12,这是正确的.
但[^A-Z]输出AbcDefGhi,即大写和小写.如果我使用[^A-Z]或者[^a-z]都返回所有字母都没关系.
我想我可能会遗漏一些简单的东西?我发现了一些建议,指整理并试图用逐份PATINDEX按照这个,但不能让它开始工作.
注意:我这样做是作为SQL Server数据库上的一次性查询来查找一些数据 - 这不会在其他任何地方重复使用,所以像性能,SQL注入(在这种情况下经常提到)等不是关心.
使用SQL Server,我有一个表,如下面的示例表所示.我需要为"BookOrder,StationaryOrder和Printing Order"列提供所有唯一值的总和.
样本表:
KeyIDCustomer BooksOrder StationaryOrder PrintingOrder
29945843 1070756 1891514 198876
29945843 1070756 1893827 198876
29945843 1070758 1891514 198876
29945843 1070758 1893827 198876
Run Code Online (Sandbox Code Playgroud)
我正在使用以下编码来实现这一目标.
Select DISTINCT KeyIDCustomerID,
Sum(Case when BooksOrder is not null then 1 else 0 End) TotalBookOrders,
Sum(Case when StationaryOrder is not null then 1 else 0 End) TotalStationaryOrder,
Sum(Case when PrintingOrder is not null then 1 else 0 End)TotalPrintingOrder
Run Code Online (Sandbox Code Playgroud)
通过这种编码,我得到的结果如下
KeyIDCustomerID TotalBookOrders TotalStationaryOrder TotalPrintingOrder
29945843 4 4 4
Run Code Online (Sandbox Code Playgroud)
我希望结果是这样的
KeyIDCustomerID TotalBookOrders TotalStationaryOrder TotalPrintingOrder
29945843 2 2 …Run Code Online (Sandbox Code Playgroud) sql sql-server sql-server-2008 sql-server-2008-r2 sql-server-2012
运行一个简单的存储过程时,我收到此错误,坦率地说,我不知道为什么.
消息8114,级别16,状态5,过程PROC_TEST,行15
错误将数据类型varchar转换为数字.
列:
SI_ID 是 NUMERIC(19,0)SI_COMPANYID 是 NUMERIC(19,0) SI_LOGINID 是 VARCHAR(100)知道为什么吗?
这是存储过程:
CREATE PROCEDURE [xxxxxx].[PROC_TEST]
AS
BEGIN
SET NOCOUNT ON
DECLARE
@id NUMERIC(19,0),
@login VARCHAR(100);
DECLARE user_cursor CURSOR <<----- Line 15
FOR
SELECT
SI_ID, SI_LOGINID
FROM SI_USER
WHERE SI_COMPANYID = 123
OPEN user_cursor
FETCH NEXT FROM user_cursor into @id, @login
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @id + ', ' + @login
FETCH NEXT FROM user_cursor into @id, @login
END
CLOSE user_cursor
DEALLOCATE user_cursor
END
Run Code Online (Sandbox Code Playgroud)