标签: t-sql

如何在T-SQL中将数字和字符串连接成格式化数字?

我有以下功能

ALTER FUNCTION [dbo].[ActualWeightDIMS]
(
    -- Add the parameters for the function here
    @ActualWeight int,
    @Actual_Dims_Lenght int,
    @Actual_Dims_Width int,
    @Actual_Dims_Height int
)
RETURNS varchar(50)
AS
BEGIN

DECLARE @ActualWeightDIMS varchar(50);
--Actual Weight
     IF (@ActualWeight is not null) 
          SET @ActualWeightDIMS = @ActualWeight;
--Actual DIMS
     IF (@Actual_Dims_Lenght is not null) AND 
          (@Actual_Dims_Width is not null) AND (@Actual_Dims_Height is not null)
          SET @ActualWeightDIMS= @Actual_Dims_Lenght + 'x' + @Actual_Dims_Width + 'x' + @Actual_Dims_Height;


     RETURN(@ActualWeightDIMS);

END
Run Code Online (Sandbox Code Playgroud)

但当我尝试使用它时,我收到以下错误"将varchar值'x'转换为数据类型int时转换失败." 当我使用以下select语句时

select 
 BA_Adjustment_Detail.ID_Number [ID_Number],
 BA_Adjustment_Detail.Submit_Date [Submit_Date],
 BA_Category.Category [category],
 BA_Type_Of_Request.Request …
Run Code Online (Sandbox Code Playgroud)

sql t-sql

95
推荐指数
4
解决办法
26万
查看次数

将数据库模式导出到SQL文件中

是否可以MS SQL Server 2008将数据库结构导出到T-SQL文件中?

我不仅要导出表模式,还要导出主键,外键,约束,索引,存储过程,用户定义的类型/函数.

此外,我不希望数据出现在此T-SQL文件中.

有没有办法实现这一目标?

sql t-sql database sql-server export

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

SQL Server中的一个奇怪的操作问题(-100/-100*10 = 0)

  • 如果你执行SELECT -100/-100*10结果是0.
  • 如果你执行SELECT (-100/-100)*10结果是10.
  • 如果你执行SELECT -100/(-100*10)结果是0.
  • 如果你执行SELECT 100/100*10结果是10.

BOL声明:

当表达式中的两个运算符具有相同的运算符优先级时,它们将根据它们在表达式中的位置从左到右进行计算.

Level   Operators
  1     ~ (Bitwise NOT)
  2     * (Multiplication), / (Division), % (Modulus)
  3     + (Positive), - (Negative), + (Addition), + (Concatenation), - (Subtraction), & (Bitwise AND), ^ (Bitwise Exclusive OR), | (Bitwise OR)
Run Code Online (Sandbox Code Playgroud)

BOL是错的,还是我错过了什么?似乎-正在抛弃(预期)优先权.

sql t-sql sql-server operator-precedence

95
推荐指数
3
解决办法
6206
查看次数

SQL Server:仅获取过去一年的数据

我正在写一个查询,我必须在去年获得数据.做这个的最好方式是什么?

SELECT ... FROM ... WHERE date > '8/27/2007 12:00:00 AM'
Run Code Online (Sandbox Code Playgroud)

sql t-sql database sql-server

94
推荐指数
5
解决办法
25万
查看次数

如何列出SQL Server表的主键?

简单的问题,如何使用T-SQL列出表的主键?我知道如何在表上获取索引,但不记得如何获取PK.

sql t-sql sql-server

94
推荐指数
7
解决办法
17万
查看次数

如何使用Print Statement打印VARCHAR(MAX)?

我有一个代码是:

DECLARE @Script VARCHAR(MAX)

SELECT @Script = definition FROM manged.sys.all_sql_modules sq
where sq.object_id = (SELECT object_id from managed.sys.objects 
Where type = 'P' and Name = 'usp_gen_data')

Declare @Pos int

SELECT  @pos=CHARINDEX(CHAR(13)+CHAR(10),@script,7500)

PRINT SUBSTRING(@Script,1,@Pos)

PRINT SUBSTRING(@script,@pos,8000)
Run Code Online (Sandbox Code Playgroud)

脚本的长度大约是10,000个字符,因为我使用的print语句最多只能容纳8000个.所以我使用了两个打印语句.

问题是,当我有一个脚本,比如18000个字符,然后我习惯使用3个打印语句.

那么有没有办法可以根据脚本的长度设置打印语句的数量?

sql t-sql sql-server sql-server-2005 sql-server-2008

94
推荐指数
10
解决办法
8万
查看次数

从SQL语句中的字段中删除前导零

我正在研究从SQLServer数据库读取以生成提取文件的SQL查询.从特定字段中删除前导零的要求之一,这是一个简单的VARCHAR(10)字段.因此,例如,如果字段包含'00001A',则SELECT语句需要将数据返回为'1A'.

SQL中有没有办法以这种方式轻松删除前导零?我知道有一个RTRIM功能,但这似乎只是删除空格.

sql t-sql sql-server

93
推荐指数
5
解决办法
21万
查看次数

在数据库内的任何表的任何列中搜索一个值

有没有办法char(64)在一个MS SQL Server数据库中的任何表的任何列内搜索一个值(在我的情况下,它是该类型的UID )?

我坐在一个巨大的数据库前,不知道如何将表连接在一起.为了找到它,我想列出所有表,并列出任何行中包含特定值的列.那可能吗?

一种方法可能是将整个数据库转储到文本文件中,而不是使用任何文本编辑器来搜索值 - 但如果数据库太大,这将是非常痛苦的.

t-sql

93
推荐指数
4
解决办法
18万
查看次数

如果函数已经存在,如何删除它?

我知道这一定很简单,但是我如何通过检查来创建一个函数来查看它是否已经存在?如果它存在,我想删除并重新创建它.

t-sql sql-server-2000

93
推荐指数
6
解决办法
12万
查看次数

替换为text或ntext数据类型的REPLACE

我需要更新/替换datatable.column中的数据.该表有一个名为的字段Content.我正在使用该REPLACE功能.由于列数据类型是NTEXT,SQL Server不允许我使用该REPLACE函数.

我无法更改数据类型,因为此数据库是第三方软件表.更改数据类型将导致应用程序失败.

UPDATE [CMS_DB_test].[dbo].[cms_HtmlText] 
SET Content = REPLACE(Content,'ABC','DEF') 
WHERE Content LIKE '%ABC%' 
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

消息8116,级别16,状态1,行1参数数据类型ntext对替换函数的参数1无效.

  • 我可以用T-SQL解决这个问题吗?有人有一个如何阅读和循环的例子吗?
  • 由于这是一次性转换,也许我可以改为另一种类型,但我担心我搞乱了数据.

有一个主键字段:name:ID - integer - 它是一个标识....所以我也需要考虑这个问题.也许将身份设置为N临时.

请告知如何实现REPLACE功能?

约.需要使用新解决方案更新3000个语句.

sql t-sql sql-server

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