当前位置: 首页 > wzjs >正文

做英文网站多少钱seo官网优化详细方法

做英文网站多少钱,seo官网优化详细方法,精品资料网资料大全,成都网站建设全平台使用场景:知道表名,同时知道这个表中含有某个字符串,但是不知道这个字符串是在表的哪些列,在列比较多的情况下,查询很麻烦,通过以下语句或者封装的存储可以查出字符串在哪些列出现。结果集里 ContainsValue…

       使用场景:知道表名,同时知道这个表中含有某个字符串,但是不知道这个字符串是在表的哪些列,在列比较多的情况下,查询很麻烦,通过以下语句或者封装的存储可以查出字符串在哪些列出现。结果集里 ContainsValue = 1 就是包含字符串的列。

-- 配置参数
DECLARE @TableName NVARCHAR(128) = 'YourTableName';  -- 替换为实际表名
DECLARE @SearchValue SQL_VARIANT = 'YourSearchValue';  -- 替换为要查找的值
DECLARE @SQL NVARCHAR(MAX) = '';
DECLARE @ColumnName NVARCHAR(128);
DECLARE @ColumnType NVARCHAR(128);
DECLARE @SearchValueStr NVARCHAR(MAX);
DECLARE @IsNumeric BIT;
DECLARE @IsDate BIT;

-- 创建临时表存储结果
IF OBJECT_ID('tempdb..#ColumnSearchResults') IS NOT NULL
    DROP TABLE #ColumnSearchResults;
    
CREATE TABLE #ColumnSearchResults (
    ColumnName NVARCHAR(128),
    ContainsValue BIT
);

-- 将SQL_VARIANT转换为字符串
SET @SearchValueStr = CONVERT(NVARCHAR(MAX), @SearchValue);

-- 预检查是否为数值或日期
SET @IsNumeric = ISNUMERIC(@SearchValueStr);
SET @IsDate = ISDATE(@SearchValueStr);

-- 获取表的所有列名(兼容旧版SQL Server)
DECLARE ColumnCursor CURSOR FOR
SELECT COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @TableName
  AND DATA_TYPE NOT IN ('image', 'text', 'ntext', 'hierarchyid', 'geometry', 'geography', 'xml', 'timestamp');

OPEN ColumnCursor;
FETCH NEXT FROM ColumnCursor INTO @ColumnName, @ColumnType;

WHILE @@FETCH_STATUS = 0
BEGIN
    -- 处理数值类型(优化算术溢出问题)
    IF @ColumnType IN ('int', 'bigint', 'smallint', 'tinyint', 'decimal', 'numeric', 'float', 'real', 'money', 'smallmoney')
    BEGIN
        IF @IsNumeric = 1
        BEGIN
            -- 使用字符串比较避免直接转换搜索值
            SET @SQL = '
            INSERT INTO #ColumnSearchResults (ColumnName, ContainsValue)
            SELECT ''' + QUOTENAME(@ColumnName) + ''', 
                   CASE 
                       WHEN EXISTS (
                           SELECT 1 
                           FROM ' + QUOTENAME(@TableName) + ' 
                           WHERE LTRIM(RTRIM(CONVERT(NVARCHAR(MAX), ' + QUOTENAME(@ColumnName) + '))) = @SearchValue)
                       THEN 1 
                       ELSE 0 
                   END';
        END
        ELSE
            SET @SQL = '
            INSERT INTO #ColumnSearchResults (ColumnName, ContainsValue)
            SELECT ''' + QUOTENAME(@ColumnName) + ''', 0';
    END
    -- 处理日期/时间类型的特殊转换
    ELSE IF @ColumnType IN ('date', 'datetime', 'datetime2', 'smalldatetime')
    BEGIN
        IF @IsDate = 1
            SET @SQL = '
            INSERT INTO #ColumnSearchResults (ColumnName, ContainsValue)
            SELECT ''' + QUOTENAME(@ColumnName) + ''', 
                   CASE 
                       WHEN EXISTS (
                           SELECT 1 
                           FROM ' + QUOTENAME(@TableName) + ' 
                           WHERE CONVERT(NVARCHAR(30), ' + QUOTENAME(@ColumnName) + ', 120) = @SearchValue)
                       THEN 1 
                       ELSE 0 
                   END';
        ELSE
            SET @SQL = '
            INSERT INTO #ColumnSearchResults (ColumnName, ContainsValue)
            SELECT ''' + QUOTENAME(@ColumnName) + ''', 0';
    END
    -- 处理时间类型
    ELSE IF @ColumnType = 'time'
    BEGIN
        -- 检查时间格式是否有效
        IF @IsDate = 1 OR ISDATE('2000-01-01 ' + @SearchValueStr) = 1
            SET @SQL = '
            INSERT INTO #ColumnSearchResults (ColumnName, ContainsValue)
            SELECT ''' + QUOTENAME(@ColumnName) + ''', 
                   CASE 
                       WHEN EXISTS (
                           SELECT 1 
                           FROM ' + QUOTENAME(@TableName) + ' 
                           WHERE CONVERT(NVARCHAR(12), ' + QUOTENAME(@ColumnName) + ', 114) = @SearchValue)
                       THEN 1 
                       ELSE 0 
                   END';
        ELSE
            SET @SQL = '
            INSERT INTO #ColumnSearchResults (ColumnName, ContainsValue)
            SELECT ''' + QUOTENAME(@ColumnName) + ''', 0';
    END
    -- 处理位类型
    ELSE IF @ColumnType = 'bit'
        SET @SQL = '
        INSERT INTO #ColumnSearchResults (ColumnName, ContainsValue)
        SELECT ''' + QUOTENAME(@ColumnName) + ''', 
               CASE 
                   WHEN EXISTS (
                       SELECT 1 
                       FROM ' + QUOTENAME(@TableName) + ' 
                       WHERE ' + QUOTENAME(@ColumnName) + ' = CASE 
                           WHEN @SearchValue IN (''1'', ''true'', ''TRUE'') THEN 1 
                           WHEN @SearchValue IN (''0'', ''false'', ''FALSE'') THEN 0 
                           ELSE NULL 
                       END)
                   THEN 1 
                   ELSE 0 
               END';
    -- 处理其他类型(默认作为字符串比较)
    ELSE
        SET @SQL = '
        INSERT INTO #ColumnSearchResults (ColumnName, ContainsValue)
        SELECT ''' + QUOTENAME(@ColumnName) + ''', 
               CASE 
                   WHEN EXISTS (
                       SELECT 1 
                       FROM ' + QUOTENAME(@TableName) + ' 
                       WHERE ' + QUOTENAME(@ColumnName) + ' = @SearchValue)
                   THEN 1 
                   ELSE 0 
               END';
    
    -- 执行查询
    EXEC sp_executesql 
        @SQL, 
        N'@SearchValue NVARCHAR(MAX)', 
        @SearchValue = @SearchValueStr;
    
    FETCH NEXT FROM ColumnCursor INTO @ColumnName, @ColumnType;
END;

CLOSE ColumnCursor;
DEALLOCATE ColumnCursor;

-- 返回结果
SELECT * FROM #ColumnSearchResults


-- 封装为存储过程

CREATE PROCEDURE UP_SearchAllColumns
    @TableName NVARCHAR(128),
    @SearchValue SQL_VARIANT,
    @ResultTable NVARCHAR(128) = NULL  -- 可选参数:指定结果表名
AS
BEGIN
    SET NOCOUNT ON;

    -- 声明变量
    DECLARE @SQL NVARCHAR(MAX) = '';
    DECLARE @ColumnName NVARCHAR(128);
    DECLARE @ColumnType NVARCHAR(128);
    DECLARE @SearchValueStr NVARCHAR(MAX);
    DECLARE @IsNumeric BIT;
    DECLARE @IsDate BIT;
    DECLARE @ResultTableName NVARCHAR(128);

    -- 设置结果表名
    IF @ResultTable IS NULL
        SET @ResultTableName = '##SearchResults_' + REPLACE(CAST(NEWID() AS NVARCHAR(36)), '-', '_');
    ELSE
        SET @ResultTableName = @ResultTable;

    -- 创建结果表
    SET @SQL = '
    IF OBJECT_ID(''tempdb..' + QUOTENAME(@ResultTableName) + ''') IS NOT NULL
        DROP TABLE ' + QUOTENAME(@ResultTableName) + ';
        
    CREATE TABLE ' + QUOTENAME(@ResultTableName) + ' (
        ColumnName NVARCHAR(128),
        ContainsValue BIT
    );';
    
    EXEC sp_executesql @SQL;

    -- 将SQL_VARIANT转换为字符串
    SET @SearchValueStr = CONVERT(NVARCHAR(MAX), @SearchValue);

    -- 预检查是否为数值或日期
    SET @IsNumeric = ISNUMERIC(@SearchValueStr);
    SET @IsDate = ISDATE(@SearchValueStr);

    -- 检查目标表是否存在
    IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = @TableName)
    BEGIN
        RAISERROR('目标表不存在: %s', 16, 1, @TableName);
        RETURN;
    END;

    -- 获取表的所有列名(兼容旧版SQL Server)
    DECLARE ColumnCursor CURSOR FOR
    SELECT COLUMN_NAME, DATA_TYPE
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME = @TableName
      AND DATA_TYPE NOT IN ('image', 'text', 'ntext', 'hierarchyid', 'geometry', 'geography', 'xml', 'timestamp');

    OPEN ColumnCursor;
    FETCH NEXT FROM ColumnCursor INTO @ColumnName, @ColumnType;

    WHILE @@FETCH_STATUS = 0
    BEGIN
        -- 处理数值类型(优化算术溢出问题)
        IF @ColumnType IN ('int', 'bigint', 'smallint', 'tinyint', 'decimal', 'numeric', 'float', 'real', 'money', 'smallmoney')
        BEGIN
            IF @IsNumeric = 1
            BEGIN
                -- 使用字符串比较避免直接转换搜索值
                SET @SQL = '
                INSERT INTO ' + QUOTENAME(@ResultTableName) + ' (ColumnName, ContainsValue)
                SELECT ''' + REPLACE(@ColumnName, '''', '''''') + ''', 
                       CASE 
                           WHEN EXISTS (
                               SELECT 1 
                               FROM ' + QUOTENAME(@TableName) + ' 
                               WHERE LTRIM(RTRIM(CONVERT(NVARCHAR(MAX), ' + QUOTENAME(@ColumnName) + '))) = @pSearchValue)
                           THEN 1 
                           ELSE 0 
                       END';
            END
            ELSE
                SET @SQL = '
                INSERT INTO ' + QUOTENAME(@ResultTableName) + ' (ColumnName, ContainsValue)
                SELECT ''' + REPLACE(@ColumnName, '''', '''''') + ''', 0';
        END
        -- 处理日期/时间类型的特殊转换
        ELSE IF @ColumnType IN ('date', 'datetime', 'datetime2', 'smalldatetime')
        BEGIN
            IF @IsDate = 1
                SET @SQL = '
                INSERT INTO ' + QUOTENAME(@ResultTableName) + ' (ColumnName, ContainsValue)
                SELECT ''' + REPLACE(@ColumnName, '''', '''''') + ''', 
                       CASE 
                           WHEN EXISTS (
                               SELECT 1 
                               FROM ' + QUOTENAME(@TableName) + ' 
                               WHERE CONVERT(NVARCHAR(30), ' + QUOTENAME(@ColumnName) + ', 120) = @pSearchValue)
                           THEN 1 
                           ELSE 0 
                       END';
            ELSE
                SET @SQL = '
                INSERT INTO ' + QUOTENAME(@ResultTableName) + ' (ColumnName, ContainsValue)
                SELECT ''' + REPLACE(@ColumnName, '''', '''''') + ''', 0';
        END
        -- 处理时间类型
        ELSE IF @ColumnType = 'time'
        BEGIN
            -- 检查时间格式是否有效
            IF @IsDate = 1 OR ISDATE('2000-01-01 ' + @SearchValueStr) = 1
                SET @SQL = '
                INSERT INTO ' + QUOTENAME(@ResultTableName) + ' (ColumnName, ContainsValue)
                SELECT ''' + REPLACE(@ColumnName, '''', '''''') + ''', 
                       CASE 
                           WHEN EXISTS (
                               SELECT 1 
                               FROM ' + QUOTENAME(@TableName) + ' 
                               WHERE CONVERT(NVARCHAR(12), ' + QUOTENAME(@ColumnName) + ', 114) = @pSearchValue)
                           THEN 1 
                           ELSE 0 
                       END';
            ELSE
                SET @SQL = '
                INSERT INTO ' + QUOTENAME(@ResultTableName) + ' (ColumnName, ContainsValue)
                SELECT ''' + REPLACE(@ColumnName, '''', '''''') + ''', 0';
        END
        -- 处理位类型
        ELSE IF @ColumnType = 'bit'
            SET @SQL = '
            INSERT INTO ' + QUOTENAME(@ResultTableName) + ' (ColumnName, ContainsValue)
            SELECT ''' + REPLACE(@ColumnName, '''', '''''') + ''', 
                   CASE 
                       WHEN EXISTS (
                           SELECT 1 
                           FROM ' + QUOTENAME(@TableName) + ' 
                           WHERE ' + QUOTENAME(@ColumnName) + ' = CASE 
                               WHEN @pSearchValue IN (''1'', ''true'', ''TRUE'') THEN 1 
                               WHEN @pSearchValue IN (''0'', ''false'', ''FALSE'') THEN 0 
                               ELSE NULL 
                           END)
                       THEN 1 
                       ELSE 0 
                   END';
        -- 处理其他类型(默认作为字符串比较)
        ELSE
            SET @SQL = '
            INSERT INTO ' + QUOTENAME(@ResultTableName) + ' (ColumnName, ContainsValue)
            SELECT ''' + REPLACE(@ColumnName, '''', '''''') + ''', 
                   CASE 
                       WHEN EXISTS (
                           SELECT 1 
                           FROM ' + QUOTENAME(@TableName) + ' 
                           WHERE ' + QUOTENAME(@ColumnName) + ' = @pSearchValue)
                       THEN 1 
                       ELSE 0 
                   END';
        
        -- 执行查询
        BEGIN TRY
            EXEC sp_executesql 
                @SQL, 
                N'@pSearchValue NVARCHAR(MAX)', 
                @pSearchValue = @SearchValueStr;
        END TRY
        BEGIN CATCH
            -- 记录错误但继续处理其他列
            PRINT '处理列 [' + @ColumnName + '] 时出错: ' + ERROR_MESSAGE();
        END CATCH;
        
        FETCH NEXT FROM ColumnCursor INTO @ColumnName, @ColumnType;
    END;

    CLOSE ColumnCursor;
    DEALLOCATE ColumnCursor;

    -- 返回结果
    SET @SQL = 'SELECT * FROM ' + QUOTENAME(@ResultTableName);
    EXEC sp_executesql @SQL;

    -- 如果使用的是临时表,则清理
    IF @ResultTable IS NULL
    BEGIN
        SET @SQL = 'DROP TABLE ' + QUOTENAME(@ResultTableName);
        EXEC sp_executesql @SQL;
    END;
END;    

/*
-- 简单调用(使用临时表)
EXEC up_SearchAllColumns
    @TableName = 'YourTableName', -- 实际表名
    @SearchValue = 'YourSearchValue';  -- 实际要查询的值

-- 指定结果表
EXEC up_SearchAllColumns
    @TableName = 'YourTableName',
    @SearchValue = 'YourSearchValue',
    @ResultTable = 'dbo.SearchResults';

-- 查看结果
SELECT * FROM dbo.SearchResults;
*/

http://www.dtcms.com/wzjs/384555.html

相关文章:

  • 网站开发组播地址的作用wordpress企业网站模板
  • 在线设计平台源码商丘seo
  • 网页设计的标准尺寸东营seo网站推广
  • 海外推广代理商seo外贸推广
  • 企业网站建设 论文百度账号登录官网
  • wordpress 添加搜索佛山优化推广
  • 免费做网站的公司小程序源码网
  • 珠海品牌型网站建设下百度安装
  • 合肥中小型企业网站建设方案模板附近电脑培训学校
  • 建设市场监督管理网站如何做品牌推广方案
  • centos 下载wordpressseo网络营销外包公司
  • 网络服务器无响应seo基础入门教程
  • 用自己的电脑做服务器弄网站荥阳seo推广
  • 做网站前段用什么软件青岛网站建设制作公司
  • 在哪个国家做垂直网站好谷歌竞价排名推广公司
  • 做服装网站宣传今天发生的重大新闻内容
  • 安徽池州做企业网站百度外推排名
  • 中小企业网站建设客户需求调查问卷搜索引擎营销策划方案
  • 2017主流网站风格关键词工具网站
  • h5网站建设文章自己如何制作一个小程序
  • 公司做网站的优点广东新闻今日最新闻
  • 怎么用网站做类似微博淘宝运营培训机构
  • diango做的网站怎么用百度问答平台入口
  • 网站建设中的定位设想ciliba最佳磁力搜索引擎
  • 大型门户网站建设多少钱优化设计答案四年级上册语文
  • 一个网站的欢迎页怎样做aso优化哪家好
  • 泗洪县城乡建设局网站网络服务有哪些
  • 想建设网站常见的网络营销方式有哪些
  • 广告艺术设计seo优化评论
  • 怎么注册网站账号惠州seo关键词