Repository: sqlfluff/sqlfluff
Issue category: Bug Report

sqlite unparseable types
### Search before asking

- [X] I searched the [issues](https://github.com/sqlfluff/sqlfluff/issues) and found no similar issues.


### What Happened

When trying to parse a sql statement using the `CHARACTER VARYING` type, I receive an unparseable error.

```sql
CREATE TABLE example (
    id INTEGER PRIMARY KEY,
    description CHARACTER VARYING(32) NOT NULL
);
```

```
L:   1 | P:   1 |  PRS | Line 1, Position 1: Found unparsable section: 'CREATE
                       | TABLE example (\n    id INTEGER PR...'
```

### Expected Behaviour

According to the sqlite documentation, any type with `char` in the name should be associated with TEXT storage type.
Ref: https://www.sqlite.org/datatype3.html#type_affinity

In this case, I'd expect the parsing to be successful, and would further expect no errors to have been detected.

### Observed Behaviour

```sql
CREATE TABLE example (
    id INTEGER PRIMARY KEY,
    description CHARACTER VARYING(32) NOT NULL
);
```

```
$ sqlfluff lint --dialect sqlite .

L:   1 | P:   1 |  PRS | Line 1, Position 1: Found unparsable section: 'CREATE
                       | TABLE example (\n    id INTEGER PR...'
```

### How to reproduce

```sql
CREATE TABLE example (
    id INTEGER PRIMARY KEY,
    description CHARACTER VARYING(32) NOT NULL
);
```

```
$ sqlfluff lint --dialect sqlite .

L:   1 | P:   1 |  PRS | Line 1, Position 1: Found unparsable section: 'CREATE
                       | TABLE example (\n    id INTEGER PR...'
```

### Dialect

sqlite

### Version

3.2.5

### Configuration

No non-default configuration was used, other than specifying `--dialect sqlite`.

### Are you willing to work on and submit a PR to address the issue?

- [X] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/sqlfluff/sqlfluff/blob/main/CODE_OF_CONDUCT.md)



Functions to edit:
src/sqlfluff/dialects/dialect_sqlite.py:DatatypeSegment

Patch:
diff --git a/src/sqlfluff/dialects/dialect_sqlite.py b/src/sqlfluff/dialects/dialect_sqlite.py
index 29d88446787..f3a62872451 100644
--- a/src/sqlfluff/dialects/dialect_sqlite.py
+++ b/src/sqlfluff/dialects/dialect_sqlite.py
@@ -536,6 +536,10 @@ class DatatypeSegment(ansi.DatatypeSegment):
                     OneOf("VARYING", "NATIVE"),
                     OneOf("CHARACTER"),
                 ),
+                Sequence(
+                    OneOf("CHARACTER"),
+                    OneOf("VARYING", "NATIVE"),
+                ),
                 Ref("DatatypeIdentifierSegment"),
             ),
             Ref("BracketedArguments", optional=True),

Test patch: diff --git a/test/fixtures/dialects/sqlite/create_table.sql b/test/fixtures/dialects/sqlite/create_table.sql
index 508799bff77..1024ac7b50f 100644
--- a/test/fixtures/dialects/sqlite/create_table.sql
+++ b/test/fixtures/dialects/sqlite/create_table.sql
@@ -12,3 +12,8 @@ CREATE TABLE users (
 CREATE TABLE users (
     user_id INTEGER PRIMARY KEY DESC AUTOINCREMENT
 );
+
+CREATE TABLE example (
+    id INTEGER PRIMARY KEY,
+    description CHARACTER VARYING(32) NOT NULL
+);
diff --git a/test/fixtures/dialects/sqlite/create_table.yml b/test/fixtures/dialects/sqlite/create_table.yml
index 8b5b2f5c6af..0177eac21a6 100644
--- a/test/fixtures/dialects/sqlite/create_table.yml
+++ b/test/fixtures/dialects/sqlite/create_table.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 15426b9da5919c9b161dbc1cf1577b51743c8b4b7fcf5f8829963288a4817997
+_hash: 04b62dae86f86f9768a3f717a6d5c8c35b47513f9d1bc91b8f40c677f31932fd
 file:
 - statement:
     create_table_statement:
@@ -93,3 +93,34 @@ file:
           - keyword: AUTOINCREMENT
         end_bracket: )
 - statement_terminator: ;
+- statement:
+    create_table_statement:
+    - keyword: CREATE
+    - keyword: TABLE
+    - table_reference:
+        naked_identifier: example
+    - bracketed:
+      - start_bracket: (
+      - column_definition:
+          naked_identifier: id
+          data_type:
+            data_type_identifier: INTEGER
+          column_constraint_segment:
+          - keyword: PRIMARY
+          - keyword: KEY
+      - comma: ','
+      - column_definition:
+          naked_identifier: description
+          data_type:
+          - keyword: CHARACTER
+          - keyword: VARYING
+          - bracketed_arguments:
+              bracketed:
+                start_bracket: (
+                numeric_literal: '32'
+                end_bracket: )
+          column_constraint_segment:
+          - keyword: NOT
+          - keyword: 'NULL'
+      - end_bracket: )
+- statement_terminator: ;