2022年7月

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:        flyfish
-- Create date: 2022-7-19 11:24:29
-- Description:    最后两位是否是纯英文字母(不区分大小写),纯英文返回1,否则返回0
-- =============================================
ALTER FUNCTION [dbo].[LastTwoIsEnglish]
(
    -- Add the parameters for the function here
    @@text NVARCHAR(255)
)
RETURNS NVARCHAR(255)
AS
BEGIN

    SELECT @@text = RIGHT(@@text, 2);

    -- Return the result of the function
    RETURN CASE @@text
               WHEN '' THEN
                   0
               ELSE
                   dbo.IsEnglish(@@text)
           END;
END;

[dbo].[IsEnglish]函数参考:SQLServer匹配判断字符串是否纯英文字母

原文

表一 Fruit数据:

id num name

1 1001 西瓜

2 1002 葡萄

3 1003 西瓜

4 1004 草莓

5 1005 芒果

按照表一的数据,num为1001和num为1003的name都是西瓜,记录重复,我们采取以下方式进行去重:

SELECT *
FROM
(
    SELECT *,
           ROW_NUMBER() OVER (PARTITION BY num + name ORDER BY num + name) rowNumber
    FROM Fruit
) a
WHERE a.rowNumber = 1;

总结:

通过开窗函数,将多个字段拼接组成一个新的标识列,进行分组,将该语句作为子查询,在父查询sql中通过该标识列得到的rowNumber进行过滤

转载:https://www.cnblogs.com/lovew/p/7280324.html

原理

这里正则所使用的匹配方式为"&"取反方式,避免token中包含特殊字符无法匹配完整的问题,且适配了token前后参数可有可无的情况,代码使用的是typescript

定义

/**
 * 获取url参数值
 * @param url Url
 * @param paramName 参数名
 * @returns 匹配的值
 */
export function GetUrlParamValue(url: string, paramName: string): string {
  let value = ''
  if (paramName) {
    const regExp = new RegExp(`${paramName}=(?<${paramName}>[^&]+)&*`)
    const regExpMatchs = url.match(regExp)
    if (regExpMatchs) {
      if (regExpMatchs.groups) {
        const temp = regExpMatchs.groups[paramName]
        if (temp) {
          value = temp
        }
      }
    }
  }
  return value
}

使用

const url = 'http://localhost/baidu/#/callback?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9zaWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dzLzIwMDgvMDYvaWRlbnRpdHkvY2xhaW1zL2V4cGlyZWQiOiIxNjU2OTExMjM1IiwiVXNlck5hbWVDTiI6IiVFNyVBRSVBMSVFNyU5MCU4NiVFNSU5MSU5OCIsIlVJRCI6ImFkbWluIiwiRW1haWwiOiJhZG1pbkBhZG1pbi5jb20iLCJHSUQiOiJhZG1pbiIsIlNhcFJvbGUiOiJDUE0iLCJTYXBVc2VyTm8iOiI4MDg2MTE2NiIsIlRpdGxlIjoiM1QiLCJVc2VyTmFtZUVuIjoiYWRtaW4iLCJSb2xlcyI6IiIsIk9sZEdJRCI6IiIsIk1vZHVsZXMiOiJVLFAsTSxELFMsVFMiLCJQZXJzc2lvbnMiOiItMTM2MzEzMDg4IiwiZXhwIjoxNjU5NDkzMjM1LCJpc3MiOiJTT0Rlc2siLCJhdWQiOiJTT0FwaSJ9.nJXls2xyPf3H9o6ZIyZ0pgTqDRipDqfAedcn6QJ9AJQ&param2=xxxxx'
const token = getParamValue(url, 'token')
console.log(token)