是否可以使用表列的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) 我需要从下面给出的表中的每个重复记录集中取出最上面的第一行.我需要在视图中使用此查询
请没有临时表,因为我已经通过添加标识列和最小功能和分组来完成它.我需要没有临时表或表变量的解决方案
这只是示例数据.原始表中有1000个记录,我只需要前1000个的结果,所以不能使用distinct
我正在使用SQL Server 2005
alt text http://img686.imageshack.us/img686/42/duplicate.png
谢谢.
给定一个表值函数,如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) 例如,如果您在查询中有> 5个左连接是代码味道有...
我试图从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)
然后我尝试从临时表中选择数据.我经常搜索,我不知道自己错了什么.救命?
这看起来很微不足道,但现在让我感到沮丧.
我正在使用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) 如何使用tsql获取sql server实例中的所有数据库名称?
是否可以在一个中选择2列并将它们组合起来?
例:
select something + somethingElse as onlyOneColumn from someTable
我想在一个表上使用select语句并将结果插入到临时表变量中,但是我没有使用列声明临时表,我希望像这样使用:
Declare #tmp table;
SELECT * INTO #tmp FROM myTable
Run Code Online (Sandbox Code Playgroud)
这需要声明#tmp的列和数据类型
请帮我
使用SQL Server 2005如何获得以下语句,或者更确切地说是我想要的输出.
SELECT Id 'PatientId',
ISNULL(ParentId,'') 'ParentId'
FROM Patients
Run Code Online (Sandbox Code Playgroud)
ParenId是uniqueidentifier允许的NULL,但似乎查询优化器也试图转换''回uniqueidentifier行中的那些ParentId = NULL.如标题所示,这是查询运行程序抛出的确切错误信息!
ParentId = NULLsql-server-2005 ×10
sql ×5
t-sql ×5
sql-server ×3
c# ×1
left-join ×1
ordinals ×1
select ×1
xp-cmdshell ×1