标签: sql-server-2005

是否可以使用列序号位置选择sql server数据

是否可以使用表列的ordinal_position选择列数据?我知道使用序数位置是一种不好的做法,但对于一次性数据导入过程,我需要能够使用序数位置来获取列数据.

所以举个例子

create table Test(
    Col1 int,
    Col2 nvarchar(10)

)
Run Code Online (Sandbox Code Playgroud)

而不是使用

select Col2 from Test
Run Code Online (Sandbox Code Playgroud)

我能写吗?

select "2" from Test -- for illustration purposes only
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server ordinals sql-server-2005

34
推荐指数
4
解决办法
9万
查看次数

从没有唯一标识的重复记录中获取最高记录

我需要从下面给出的表中的每个重复记录集中取出最上面的第一行.我需要在视图中使用此查询

请没有临时表,因为我已经通过添加标识列和最小功能和分组来完成它.我需要没有临时表或表变量的解决方案

这只是示例数据.原始表中有1000个记录,我只需要前1000个的结果,所以不能使用distinct

我正在使用SQL Server 2005

alt text http://img686.imageshack.us/img686/42/duplicate.png

谢谢.

sql t-sql sql-server-2005

34
推荐指数
3
解决办法
12万
查看次数

在多行上执行表值函数?

给定一个表值函数,如dbo.Split()"T-SQL:对面字符串连接-如何将字符串分割成多个记录",我如何通过多行作为参数?

这有效:

SELECT *
FROM dbo.Split
  (',', (SELECT myColumn FROM Stuff WHERE id = 22268))
WHERE ISNULL(s,'') <> ''
Run Code Online (Sandbox Code Playgroud)

它返回:

pn          s
----------- -----------
1           22351
2           22354
3           22356
4           22357
5           22360
Run Code Online (Sandbox Code Playgroud)

但这不是:

SELECT *
FROM dbo.Split
  (',', (SELECT myColumn FROM Stuff))
WHERE ISNULL(s,'') <> ''
Run Code Online (Sandbox Code Playgroud)

这也不是:

SELECT * FROM dbo.Split_temp(',', myColumn), Stuff
Run Code Online (Sandbox Code Playgroud)

文档说:

当在子查询的FROM子句中调用返回表的用户定义函数时,函数参数不能引用外部查询中的任何列.

我正在寻找的那种结果集看起来像:

id          pn          s
----------- ----------- -----------
22268       1           22351
22268       2           22354
22268       3           22356
22268       4 …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server-2005 user-defined-functions

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

是否有太多左手加入代码味道?

例如,如果您在查询中有> 5个左连接是代码味道有...

  • 你的设计出了什么问题?
  • 你在一个查询中做得太多了吗?
  • 你的数据库太规范化了吗?

sql sql-server-2005 left-join

33
推荐指数
4
解决办法
8461
查看次数

使用SQL Server读取文本文件

我试图从SQL查询(SQL Server 2005)中读取文本文件,但根本没有运气.我用EXEC和xp_cmdshell尝试了各种各样的东西,但都没有用.这是我试图解决这个问题的一般方法:

CREATE TABLE temp (data varchar(2000));
INSERT temp EXEC master.dbo.xp_cmdshell 'type file.txt';
Run Code Online (Sandbox Code Playgroud)

然后我尝试从临时表中选择数据.我经常搜索,我不知道自己错了什么.救命?

sql-server sql-server-2005 xp-cmdshell

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

检查数据库在创建之前是否存在

这看起来很微不足道,但现在让我感到沮丧.

我正在使用C#和SQL Server 2005 Express.

我使用以下代码.我想在创建数据库之前检查数据库是否存在.但是,返回的整数是-1,这就是MSDN定义ExecuteNonQuery()将返回的内容的方式.现在,数据库确实存在,但仍然返回-1.话虽如此,我怎样才能使这项工作得到理想的结果呢?

private static void checkInventoryDatabaseExists(ref SqlConnection tmpConn, ref bool databaseExists)
{
    string sqlCreateDBQuery;
    try
    {
        tmpConn = new SqlConnection("server=(local)\\SQLEXPRESS;Trusted_Connection=yes");

        sqlCreateDBQuery = "SELECT * FROM master.dbo.sysdatabases where name = 
        \'INVENTORY\'";

        using (tmpConn)
        {
            tmpConn.Open();
            tmpConn.ChangeDatabase("master");

            using (SqlCommand sqlCmd = new SqlCommand(sqlCreateDBQuery, tmpConn))
            {
                int exists = sqlCmd.ExecuteNonQuery();

                if (exists <= 0)
                    databaseExists = false;
                else
                    databaseExists = true;
            }
        }
    }
    catch (Exception ex) { }

}
Run Code Online (Sandbox Code Playgroud)

c# t-sql sql-server-2005

33
推荐指数
3
解决办法
6万
查看次数

33
推荐指数
3
解决办法
9万
查看次数

在一个中选择2列并合并它们

是否可以在一个中选择2列并将它们组合起来?

例:

select something + somethingElse as onlyOneColumn from someTable

sql select sql-server-2005

33
推荐指数
7
解决办法
14万
查看次数

如何在没有声明表的情况下选择*INTO [tmp表]?

我想在一个表上使用select语句并将结果插入到临时表变量中,但是我没有使用列声明临时表,我希望像这样使用:

Declare #tmp table;

SELECT * INTO #tmp FROM myTable
Run Code Online (Sandbox Code Playgroud)

这需要声明#tmp的列和数据类型

请帮我

sql-server-2005 sql-server-2008

33
推荐指数
2
解决办法
5万
查看次数

将NULL转换为空字符串 - 从字符串转换为uniqueidentifier时转换失败

使用SQL Server 2005如何获得以下语句,或者更确切地说是我想要的输出.

SELECT Id   'PatientId',
       ISNULL(ParentId,'')  'ParentId'
FROM Patients
Run Code Online (Sandbox Code Playgroud)

ParenId是uniqueidentifier允许的NULL,但似乎查询优化器也试图转换''uniqueidentifier行中的那些ParentId = NULL.如标题所示,这是查询运行程序抛出的确切错误信息!

  • 如何让服务器返回空字符串 ParentId = NULL

sql-server sql-server-2005 uniqueidentifier

33
推荐指数
3
解决办法
12万
查看次数