标签: sql-server-2008-r2

为什么 SQL Server 为 ISDATE('13/01/2010') 返回 0

我有一个视图,我有一个日期为 varchar 格式的列,dd/MM/yyyy 当我尝试使用 order by 时,它给出了错误

消息 241,级别 16,状态 1,第 2 行 从字符串转换日期和/或时间时转换失败。

查询是

select * from test1.dbo.abcd order by CONVERT(date,ddate,103)
Run Code Online (Sandbox Code Playgroud)

它返回 0 的某些日期是 13/01/2010

18/12/2009
20/10/2009
21/06/2010
19/10/2009
18/11/2010
29/10/2009
29/10/2009
18/03/2010
15/03/2010
15/03/2010
15/03/2010
15/04/2010
15/04/2010
15/04/2010
15/04/2010
30/03/2010
14/05/2010
14/01/2010
23/10/2009
20/10/2009
27/10/2009
27/10/2009
20/07/2009
20/04/2010
13/08/2010
30/06/2011
23/07/2010
27/08/2010
24/09/2010
Run Code Online (Sandbox Code Playgroud)

谁能告诉我为什么它返回 0 以及如何对其进行排序?

sql sql-server-2008-r2

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

是否可以为 SQL Server 2008 r2 中的列设置最大值

我的问题很简单,但我不确定是否可能。

假设我有一个表格,它包含下面的列

PokemonHappiness    smallint
Run Code Online (Sandbox Code Playgroud)

是否可以为该列设置最大值?

例如,如果我将最大值设置为 10000 并发送这样的查询

--Assume that PokemonHappiness is equal to 9990
update mytable set PokemonHappiness = PokemonHappiness+50   
Run Code Online (Sandbox Code Playgroud)

它应该变成 10000 而不是 10040

这可能吗?

t-sql max set sql-server-2008-r2

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

从 SELECT 语句构建字符串

可能的重复:
SQL Server Group Concat with different characters

我需要一个关于 SELECT 的示例,其中输出是一个 ',' 分隔的字符串

例如 SELECT (... something ...) name AS output FROM name_table

给我

output
-----------------------------
'Ann', 'Tom', 'Wilson', .....
Run Code Online (Sandbox Code Playgroud)

您将如何在 SQL Server 2008 R2 中做到这一点?

谢谢!

sql sql-server-2008 sql-server-2008-r2

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

什么是在C#中打开/关闭SqlConnection的最佳方法

我想知道这可能是打开一个最好的方法SqlConnectionSql Server 2008R2 Express Edition数据库.此版本的Sql具有RAM使用率和CPU使用率的限制,因此我们必须采用最佳方法来打开SqlConnection.

现在我正在检查每个方法的开始和结束时的连接.这是一个例子.

   private void CheckValidId(string Id)
    {
        CheckConnectionStatus();

        try
        {
            sqlConnection.Open();
            sqlCommand = new SqlCommand("select * from ValidId where id=@id", sqlConnection);
            sqlCommand.Parameters.AddWithValue("@id", Id);
            sqlDataReader = sqlCommand.ExecuteReader();
            While (sqlDataReader.Read())
            {
               string Test = sqlDataReader["Id"].toString();
               MessageBox.Show("Value of Id : " , Test);
            }
        }
        catch (Exception exp)
        {
            MessageBox.Show(exp.Message.ToString(), "Exception in CheckValidId");
        }
        finally
        {
            CheckConnectionStatus();
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是CheckConnectionStatus方法

    private void CheckConnectionStatus()
    {
        if (sqlConnection.State == ConnectionState.Open)
        {
            sqlConnection.Close();
        } …
Run Code Online (Sandbox Code Playgroud)

c# sql-server database-connection sql-server-2008-r2 sql-server-2008r2-express

1
推荐指数
2
解决办法
1344
查看次数

使用SQL Server更新序列的脚本

我正在使用Microsoft SQL Server 2008 R2作为JEE应用程序(JSF,JPA,EclipseLink).

我每周重启我的数据库,这样做我需要更新所有表格的顺序:

UPDATE[dbo].[SEQUENCE] 
SET [SEQ_COUNT] = (SELECT MAX(IDAGENCE) 
                   FROM AGENCE) 
WHERE SEQ_NAME = 'SEQ_AGENCE'
Run Code Online (Sandbox Code Playgroud)

我的问题是:当我重新启动数据库以更新所有序列时,如何触发脚本?

谢谢你的帮助

sql sql-server-2008-r2

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

SQL Query接受时差

我们有SSIS工作,将记录插入两个表.当我看到InsertDate时,有10到20毫秒的时差.

我需要根据InsertDate比较两个表,但是比较它时应忽略差异是否小于60秒.

Ex: 
2017-03-15 06:09:59.930
2017-03-15 06:10:50.030

Select * from A
inner join B
on A.ID = B.ID
Where A.insertdate < B.inserdate
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2008 sql-server-2008-r2

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

SQL Server 2008 R2:DENSE_RANK()有两列

我有以下数据:

表:

CREATE TABLE tbl1
(
    cola varchar(20),
    colb int
);  

INSERT INTO tbl1 VALUES('AB10029',1),('5023154',17),('05021286',17),('10029',32),('05023154',17),('5021286',17);    
Run Code Online (Sandbox Code Playgroud)

鉴于记录:

Cola        Colb    
------------------
AB10029     1   
5023154     17  
05021286    17  
10029       32  
05023154    17  
5021286     17  
Run Code Online (Sandbox Code Playgroud)

注意:我想给非可匹配组合的等级为1(最后一个字符应该相同),colb和匹配组合应该是1,2,3等等.

预期产量:

Cola        Colb    Rn
-----------------------
AB10029     1       1
10029       32      1
5023154     17      1
05023154    17      2
5021286     17      1
05021286    17      2
Run Code Online (Sandbox Code Playgroud)

我的尝试:

SELECT Cola,Colb,
   DENSE_RANK() OVER(PARTITION BY Colb ORDER BY RIGHT(Cola,5)) rn
FROm tbl1
ORDER BY RIGHT(Cola,5)  
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2008-r2

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

当monthid为2位时,SQL Server 2008 R2中的连接失败

我有一个表和服务器是SQL Server 2008 R2,我们不能使用concat功能

YearID  |   MonthId     
--------+----------
2017    |    1  
2014    |    5  
2014    |   10  
2016    |   12
Run Code Online (Sandbox Code Playgroud)

我希望输出为

201701   
201405   
201410   
201612
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试了什么

select 
    cast(YearId as varchar(50)) + '0' + cast(MonthId as varchar(50)) 
from 
    TEST
Run Code Online (Sandbox Code Playgroud)

我得到的输出为

201701     
201405   
2014010   
2016012  
Run Code Online (Sandbox Code Playgroud)

如果monthID是2位数,则表示失败.

如何解决这种情况?

sql t-sql sql-server concatenation sql-server-2008-r2

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

使用带有ORDER BY ID的Row_Number()选择行

我正在尝试选择特定行号之间的行(例如1到50或51到10等).

下面是我的表MatTk模式,所有列都允许空值:

tk_id [varchar(50)] | mat_id [varchar(50)] | ven_id [varchar(50)] | tk_rate [money]
   1023                     104                     2212               120.11 
Run Code Online (Sandbox Code Playgroud)

本文使用Row_Number()建议选择行的子集ORDER BY id但我想避免它并以表数据的自然顺序显示它.

另请查看本文SQL Server 2005 ROW_NUMBER(),不带ORDER BY,建议插入临时表,但它不是一个选项,因为该MatTk表有数百万行.

有没有办法按行号查询行而不按ID排序而不创建临时表?

sql database sql-server row-number sql-server-2008-r2

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

在SQL Server中联接没有公共列的表

表格1

ID  
----                        
1                           
2                           
3                           
4                           
5      
Run Code Online (Sandbox Code Playgroud)

表2

Name
----
Z
Y
X
W
V                           
Run Code Online (Sandbox Code Playgroud)

预期产量:

ID              Name
-------------------------
1               NULL
2               NULL
3               NULL
4               NULL
5               NULL
NULL             Z
NULL             Y
NULL             X
NULL             W
NULL             V
Run Code Online (Sandbox Code Playgroud)

我需要通过在SQL Server中使用JOINS来解决上述情况。

t-sql sql-server sql-server-2008-r2 sql-server-2012

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