sql输入一个字符串 找出该字符串中重复的字符
时间: 2023-08-14 10:06:02 浏览: 52
假设你要查找的字符串为 `str`,可以使用以下 SQL 语句找出其中重复的字符:
```
SELECT
ch, COUNT(ch) AS count
FROM
(SELECT
SUBSTRING(str, n, 1) AS ch, n
FROM
(SELECT
@row := @row + 1 AS n
FROM
(SELECT @row := 0) r, INFORMATION_SCHEMA.COLUMNS
LIMIT LENGTH(str)) numbers) characters
GROUP BY ch
HAVING count > 1;
```
这个查询会返回一个结果集,其中包含重复的字符以及它们在字符串中出现的次数。
相关问题
sql创建函数 输入一个字符串 找出该字符串中重复的字符
可以使用如下的 SQL 函数来实现:
```sql
CREATE FUNCTION find_duplicate_chars(input_str VARCHAR(255))
RETURNS VARCHAR(255)
BEGIN
DECLARE result_str VARCHAR(255) DEFAULT '';
DECLARE i INT DEFAULT 1;
WHILE (i <= LENGTH(input_str)) DO
IF (INSTR(result_str, SUBSTRING(input_str, i, 1)) = 0) AND (INSTR(SUBSTRING(input_str, i+1), SUBSTRING(input_str, i, 1)) > 0) THEN
SET result_str = CONCAT(result_str, SUBSTRING(input_str, i, 1));
END IF;
SET i = i + 1;
END WHILE;
RETURN result_str;
END;
```
这个函数接受一个字符串输入,并返回其中重复的字符。函数中使用了一个 WHILE 循环遍历输入字符串中的每个字符,如果在已经扫描的字符中未出现过且后面还有相同的字符,则将其添加到结果字符串中。最后返回结果字符串即可。
使用示例:
```sql
SELECT find_duplicate_chars('hello world');
-- 输出 'lo'
```
这个示例中,输入字符串为 'hello world',函数返回了其中重复的字符 'l' 和 'o'。
plsql创建函数 输入一个字符串 找出该字符串中重复的字符
可以使用以下的 PL/SQL 函数来实现:
```sql
CREATE OR REPLACE FUNCTION find_duplicate_chars (input_string IN VARCHAR2)
RETURN VARCHAR2
IS
output_string VARCHAR2 (4000);
BEGIN
FOR i IN 1 .. LENGTH (input_string)
LOOP
IF INSTR (output_string, SUBSTR (input_string, i, 1)) = 0
THEN
output_string := output_string || SUBSTR (input_string, i, 1);
END IF;
END LOOP;
RETURN input_string
MINUS
TRANSLATE (
input_string,
REPLACE (output_string, SUBSTR (input_string, 1, 1), ''),
RPAD (' ', LENGTH (REPLACE (output_string, SUBSTR (input_string, 1, 1), '')))
);
END;
/
```
该函数接受一个字符串作为输入参数,然后使用一个循环遍历该字符串中的每个字符,并将它们添加到一个字符串中,该字符串中不包含重复的字符。最后,使用 `TRANSLATE` 函数返回原始字符串中重复的字符。