declare @showkey varchar(100)
declare @string varchar(100)
DECLARE @TableName VARCHAR(1000)
SET @TableName='temptable'
SET @showkey='SELECT '+'Keyword '+'FROM '+@TableName+' WHERE id=78'
exec(@showkey)
PRINT @showkey
--到这里都显示的结果为 类似 |xx|xx|xx|xx|
SET @string=@showkey
PRINT @string
--到这里都显示的结果为 类似 |xx|xx|xx|xx|select * from dbo.LewiSplitID(@string,'|')
PRINT @string
--到这里却变直接变成了 SELECT Keyword FROM News WHERE ID=78
为何他没有正确将|xx|xx|xx|xx|的值正确的传入 @string 呢,而是直接传进来了查询语句
解决方案 »
- 数据表外键丢失...
- 请问一下这条SQL语句效率如何?更好的应该怎么写呢?
- 能否在MS SQL2K存储过程中写动态的SQL语句?
- 请教如何从表中读取一个树结构?
- 高分求解----------如何提高数据库访问速度
- (在线等待)VC++,SQL SERVER 开发数据库应用程序:建表,然后使用VC++编写查询、存储过程,就这样吗?
- 哪位大哥有空帮小第解释一下sql server中的合并联接,我看了帮助但不是太明白.
- 如何使用更简单的方法进行网简通信
- 插入及修改触发器OK,删除触发器不行,请指点?
- 用SQL语句怎样将远程服务器上的数据库备份到我的客户机上。。。谢急
- 用VB语句或SQL语句如何知道系统已经安装了SQL SERVER 2000或更高版本。
- sql实现提取当前月份及当前月份后面5个月的数据,并有跨年度存在
declare @showkey varchar(100)
declare @string varchar(100)
DECLARE @TableName VARCHAR(1000)
SET @TableName='temptable'
SET @showkey='SELECT '+'Keyword '+'FROM '+@TableName+' WHERE id=78'
exec(@showkey)
PRINT @showkey
--就上面的代码能显示成这样:|xx|xx|xx|xx|
--是这样吗?|SELECT|Keyword|FROM|WHERE| 神啊,怎么来的?
CREATE
FUNCTION [dbo].[LewiSplitID](@String NVARCHAR(4000), @SplitChar NVARCHAR(10))
RETURNS @table TABLE (ID VARCHAR (100)) AS
BEGIN
DECLARE @Index INT
SET @Index = 0
IF @String <> ''
BEGIN
IF RIGHT(@String,1)<> @SplitChar
SET @String = @String + @SplitChar
IF LEFT(@String,1)= @SplitChar
SET @String = STUFF(@String, 1, 1, '')
End
WHILE CHARINDEX(@SplitChar,@String,@Index) > 0
BEGIN
INSERT INTO @table(ID)
VALUES (SUBSTRING(@String, @Index, CHARINDEX(@SplitChar, @String,@Index) - @Index))
SET @index = CHARINDEX(@SplitChar, @String, @Index) + 1
END
RETURN
END一个函数
¦xx ¦xx ¦xx ¦xx ¦转换为
xx
xx
xx
xx